我正在使用NSTimer构建一个旋转横幅来跟踪当前图像,图像是从5个不同的图像中生成的。我有一个touchesBegan设置,如果有人点击它,继续处理横幅上的触摸事件。我的概念验证有效,但是将其转移到另一个项目中,它会中断。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myImageView){
[self getImage];
NSLog(@"%@", currentImage);
}
}
现在,当我将断点放入我的项目中时,它可以很好地抓住触摸,但是当它到达时 if([触摸视图] == myImageView) 它没有检测到正在触摸图像视图。
答案 0 :(得分:7)
不确定是什么原因导致您尝试使用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");
}
答案 1 :(得分:3)
首先,您必须在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
}
}