我有一个包含两个子视图的视图:一个由UIPageViewController顶部的自定义视图组成的栏

我想避免用户能够同时触摸栏和pageView(栏控制页面视图,同时触摸它们会导致崩溃)

我所做的是将条形图的isExclusiveTouch属性设置为true。

override func awakeFromNib() {
    [...]
    isExclusiveTouch = true
}

documentation表示,如果一个视图的isExclusiveTouch属性设置为true,则同一窗口中的其他视图不应接收任何触摸事件。但是,我可以在触摸栏的同时触摸并在页面视图中滚动。

在另一个屏幕上,我有多个由自定义视图组成的开关,我想避免同时触摸多个开关,因此我也将其isExclusiveTouch设置为true,但仍然可以同时触摸其中两个。

我错过了isExclusiveTouch根本不起作用吗?

最佳答案

ExclusiveTouch仅在以下时间内阻止其他视图中的触摸
在独占触摸视图中有一个活跃的触摸。也就是说,如果
您将手指放在独家触摸视图中,触摸将无法开始
在其他视图中,直到您抬起第一根手指。它不会阻止
如果当前没有触摸,则从其他视图开始
在ExclusiveTouch视图中。

要真正使此视图成为屏幕上唯一可以接收的内容
触摸您需要在所有内容之上添加另一个视图
否则就无法捕捉其余的触摸,或者在
您的层次结构(或UIWindow本身)并覆盖
hitTest:withEvent:总是在可见时返回文本视图,
或返回nil表示不在文本视图中的触摸。

Source

关于ios - isExclusiveTouch无法在自定义UIView上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41998484/

10-09 04:58