我已经阅读了很多关于启用/禁用触摸事件的问题的答案,但没有任何对我有用,所以我问自己的一个。
我有一个UIImageView对象(spot
):
// in my view controller header file:
@property (nonatomic, strong) IBOutlet UIImageView *spot;
然后我有与此对象相关的代码:
// in my view controller .m file:
@synthesize spot
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// handle when that spot is touched ...
}
这很好用。例如,我可以在点击斑点时更改现场显示的图像。
首先,我想看看如何在现场禁用触摸事件,所以我尝试了:
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
这很好用。在某些时候,根据我想做的事情,我能够禁用所有触摸事件。
然后我在这个视图控制器上添加了一个按钮,我希望按钮可以单击,总是为该按钮启用触摸事件。
所以现在我的禁用触摸事件的方法不会起作用,因为它过于沉重。它会消除该视图中任何位置的所有触摸事件。
我想仅禁用该位置的触摸事件。我试过了:
spot.userInteractionEnabled = NO;
但那没用。这个地方仍然可以点击。我也尝试过:
[spot1 setUserInteractionEnabled:NO];
也没用。我很困惑为什么那些不起作用。我的问题是:
如何在这一个UIImageView对象上禁用触摸事件?
编辑:为了解决下面提到的问题,在Interface Builder中,在我的.xib中,我已将UIImageView对象链接到我的头文件中设置的属性。这是它的引用插座。
答案 0 :(得分:2)
为什么要为您的位置禁用触控?如果触摸来自现场,您可以简单地跳过处理。
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchLocation = [touch locationInView:self.view];
if (CGRectContainsPoint(spot.frame, touchLocation))
return;
if (CGRectContainsPoint(button.frame, touchLocation)){
//do something
}
}