我有三个UIViews:
B1B2A的子视图。
B1B2可能具有一个或多个子视图。

我希望只能同时触摸一个视图。

例如:

用户用第一根手指触摸B1(或其子视图之一),然后在不释放它的情况下,用第二根手指触摸B2(或其子视图之一)。现在,B1应该在其边界内接收所有事件,但不接收B2。反之亦然。

是否可以在不子类化的情况下完成呢?

如果没有,最简单/最干净的方法是什么?

编辑:

关于exclusiveTouchmultipleTouchEnabled:

这些属性对我的问题无效。
multipleTouchEnabled:仅确定是否在同一视图
中传递多点触摸事件。因此,禁用视图A上的多点触摸(无论如何还是默认设置)不会阻止视图B1和B2同时接收触摸事件。
exclusiveTouch:也不起作用。据我了解,exclusiveTouch仅在
视图的框架内起作用。因此,在视图B1和B2上设置exclusiveTouch无效。
请参阅以下两个stackoverflows以供参考:

Why is UIView exclusiveTouch property not blocking?

Why doesn't UIView.exclusiveTouch work?

最佳答案

尝试将B1和B2的exclusiveTouchmultipleTouchEnabled都设置为YES

编辑:我想从措辞“B1应该接收其边界内的所有事件”中,您想直接在B1和B2中接收触摸,而不是它们的子视图。如果您想将触摸限制为B1 / B2范围,但要在子视图中进行处理,我认为您需要将B1和B2或A子类化。

编辑2 :如果是交互式的B1和B2子视图,则需要将所有交互式子视图上的这些属性设置为YES(递归)。但这也使所有子视图相互排斥,而不仅仅是在B1和B2之间。

关于iphone - 只允许触摸一个UIView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13169669/

10-13 04:15