我有三个UIViews
:B1
和B2
是A
的子视图。B1
和B2
可能具有一个或多个子视图。
我希望只能同时触摸一个视图。
例如:
用户用第一根手指触摸B1
(或其子视图之一),然后在不释放它的情况下,用第二根手指触摸B2
(或其子视图之一)。现在,B1
应该在其边界内接收所有事件,但不接收B2
。反之亦然。
是否可以在不子类化的情况下完成呢?
如果没有,最简单/最干净的方法是什么?
编辑:
关于exclusiveTouch
和multipleTouchEnabled
:
这些属性对我的问题无效。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的exclusiveTouch
和multipleTouchEnabled
都设置为YES
。
编辑:我想从措辞“B1应该接收其边界内的所有事件”中,您想直接在B1和B2中接收触摸,而不是它们的子视图。如果您想将触摸限制为B1 / B2范围,但要在子视图中进行处理,我认为您需要将B1和B2或A子类化。
编辑2 :如果是交互式的B1和B2子视图,则需要将所有交互式子视图上的这些属性设置为YES
(递归)。但这也使所有子视图相互排斥,而不仅仅是在B1和B2之间。
关于iphone - 只允许触摸一个UIView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13169669/