Touchesbegan не обнаруживает то, что касается - PullRequest
2 голосов
/ 18 октября 2011

Я создаю вращающийся баннер, используя NSTimer, чтобы отслеживать текущее изображение с изображением, анимированным из 5 различных изображений.У меня есть touchesBegan, настроенный для обработки события касания на баннере, если кто-то нажимает на него.Мое доказательство концепции работает, но, переместив его в другой проект, он ломается.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myImageView){
    [self getImage];
    NSLog(@"%@", currentImage);
}
}

Теперь, когда я ставлю точки останова в свой проект, он просто отлично захватывает прикосновение, но когда доходит доесли ([touch view] == myImageView) он не обнаруживает, что к изображению касаются.

Ответы [ 2 ]

7 голосов
/ 18 октября 2011

Не уверен, что может вызвать это, но вы пытались использовать UIGestureRecognizer? Попробуйте что-то вроде приведенного ниже кода и посмотрите, будет ли вызван метод.

  //Add Gesture Recognizer
  UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self    action:@selector(imageSelected)];
  tapped.numberOfTapsRequired = 1;
  [theImageView addGestureRecognizer:tapped];

  //Memory Cleanup
  [tapped release];

 -(void)imageSelected
  {
    NSLog(@"Selected an Image");
  }
3 голосов
/ 15 ноября 2012

Прежде всего вы должны установить для userInteractionEnabled значение YES в вашем методе viewDidLoad, как показано ниже:

[myImageView setUserInteractionEnabled:YES];

Обратите внимание, что для myImageView проверка взаимодействия с пользователем, включенная с помощью Identity Inspector, не работает для меня.1004 *

Затем измените

UITouch *touch = [[event allTouches] anyObject];

на

UITouch *touch = [touches anyObject];

, чтобы метод touchesBegan выглядел следующим образом:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if ([touch view] == myImageView) {
       // place any code here when myImageView is touched
    }
 }
...