gpt4 book ai didi

ios - 在 UIImageView 对象上启用/禁用触摸事件

转载 作者:行者123 更新时间:2023-11-28 22:33:06 24 4
gpt4 key购买 nike

我已经阅读了许多关于启用/禁用触摸事件的问题的答案,但对我没有任何帮助,所以我问自己一个问题。

我有一个 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];

而且效果很好。在某些时候,根据我想做的事情,我能够禁用所有触摸事件。

然后我向这个 View Controller 添加了一个按钮,我希望该按钮始终可点击,并始终为该按钮启用触摸事件。

所以现在我禁用触摸事件的方法行不通了,因为它太粗暴了。它会清除该 View 中任何位置的所有触摸事件。

我只想禁用该点的触摸事件。我试过:

spot.userInteractionEnabled = NO;

但这没有用。该地点仍然可以点击。我也试过:

[spot1 setUserInteractionEnabled:NO];

也没有用。我很困惑为什么这些不起作用。我的问题是:

我如何才能仅在这一点(一个 UIImageView 对象)上禁用触摸事件?

编辑:为了解决下面提出的问题,在 Interface Builder 中,在我的 .xib 中,我已将 UIImageView 对象链接到我的头文件中设置的属性。那是它的引用 socket 。

最佳答案

为什么要为您的位置禁用触摸?如果触摸来自现场,您可以简单地跳过处理。

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

关于ios - 在 UIImageView 对象上启用/禁用触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com