UIImageView для добавления нового ViewController - PullRequest
0 голосов
/ 19 марта 2012

В моем приложении по определенной причине я хочу, чтобы UIImageView был сенсорным, чтобы при нажатии пользователем он переходил на новый контроллер представления. Я знаю, чтобы сделать то же самое с UIButton. Но я хочу, чтобы UIImageView сделал это сейчас. Как я это сделаю? Вот мой код для UIImageView

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 50, 50)];
[imageView setImage:[UIImage imageNamed:@"myImage.png"]];
 imageView.userInteractionEnabled = YES;
[self.view addSubview:imageView];
[imageView release];

Ответы [ 4 ]

1 голос
/ 19 марта 2012

Как сказал @Kory Sharp, вы можете использовать UITapGestureRecognizer

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[tap setNumberOfTapsRequired:1];
[yourImageView addGestureRecognizer: tap];

Обработка метода

-(void) handleTap:(UITapGestureRecognizer *)recognizer {
    if (recognizer.state == UIGestureRecognizerStateEnded) {
        //push your view controller
    }
}
1 голос
/ 19 марта 2012

Хотя было бы проще сделать эту кнопку UI (как вы упомянули), вы можете реализовать UITapGestureRecognizer для UIImageView.Вам также необходимо включить взаимодействие с пользователем в представлении с помощью свойства userInteractionEnabled.

0 голосов
/ 20 марта 2012

Вот полный код, о котором говорил Мат:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 50, 50)];
    [imageView setImage:[UIImage imageNamed:@"tap.png"]];
     [self.view addSubview:imageView];
    imageView.userInteractionEnabled = YES;


    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    [tap setNumberOfTapsRequired:1];
    [tap setNumberOfTouchesRequired:1];
    [imageView addGestureRecognizer: tap];
    [tap release];
    [imageView release];
}

-(void) handleTap:(UITapGestureRecognizer *)recognizer {
    if (recognizer.state == UIGestureRecognizerStateBegan) {


       MyTestViewController* viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"TestTable"];
        [self.navigationController pushViewController:viewController animated: YES];

    }
}
0 голосов
/ 19 марта 2012

Я использую распознаватель жестов одним нажатием здесь

{
     UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 50, 50)];
     [imageView setImage:[UIImage imageNamed:@"myImage.png"]];
     UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
     [tapGesture setNumberOfTapsRequired:1];
     [tapGesture setNumberOfTouchesRequired:1];

     [imageView setGestureRecognizers:[NSArray arrayWithObject:tapGesture]];
     [tapGesture release];
     imageView.userInteractionEnabled = YES;
     [self.view addSubview:imageView];
     [imageView release];
 }

-(void)imageTapped:(id)sender
{
  // Do STUFF HERE
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...