【发布时间】:2010-02-02 15:05:04
【问题描述】:
我目前正在开发一个应用程序,其中我有一个带有很多子视图的主视图。现在我有两个特定的子视图,我只希望其中一个同时“可触摸”。所以两者都应该能够响应触摸事件,但不能同时响应。因为我有其他应该能够同时触摸的子视图,所以我不能使用 multitouch 或 exclusiveTouch 属性。 对此有什么想法吗?也许我可以将两个视图组合到一个单点触摸区域。
提前致谢
【问题讨论】:
标签: iphone cocoa-touch
我目前正在开发一个应用程序,其中我有一个带有很多子视图的主视图。现在我有两个特定的子视图,我只希望其中一个同时“可触摸”。所以两者都应该能够响应触摸事件,但不能同时响应。因为我有其他应该能够同时触摸的子视图,所以我不能使用 multitouch 或 exclusiveTouch 属性。 对此有什么想法吗?也许我可以将两个视图组合到一个单点触摸区域。
提前致谢
【问题讨论】:
标签: iphone cocoa-touch
在您的应用委托或其他单例中添加一个读写属性,我们称之为viewBeingTouched。确保您使用@property 不使用 nonatomic。
使您的两个视图实例化为一个覆盖UIResponder 方法的类,从而实现:
在 touchesBegan 中,检查 viewBeingTouched 的值。如果是nil,将其设置为self 并调用super 的实现。否则,什么也不做。
在 touchesEnded 中,检查 viewBeingTouched 的值。如果是self,则设为nil。
明白了吗?第一个获取触摸的视图会抓取该属性并阻止另一个视图注册它。
【讨论】:
将逻辑放入它们的父级中,以(暂时)禁用未获得触摸的逻辑(userInteractionEnabled = NO)。
当然,仍然有人可以同时对它们中的每一个进行指压。您可以确定哪个视图最靠近触摸中心。
【讨论】: