Touchesbegan没有检测到正在触摸的东西

我正在使用NSTimer构build一个旋转横幅,从5个不同的图像中跟踪当前图像的animation。 我有一个touchesBegan设置,以保持处理横幅上的触摸事件,如果有人点击它。 我的概念validation工作,但移动到另一个项目,它打破了。

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

现在,当我把断点放到我的项目中时,它抓住了触摸就好,但是当它到达if([touch view] == myImageView)时,它不检测到图像视图正在被触摸。

不知道什么会导致,但你有没有尝试过使用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"); } 

首先你必须在你的viewDidLoad方法中设置userInteractionEnabled为YES,如下所示:

 [myImageView setUserInteractionEnabled:YES]; 

请注意,对于myImageView,通过Identity Inspector检查用户交互已启用对我无效。

然后改变

 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 } }