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