我正在尝试制作一个像 UISearchDisplayController 中那样的调暗 View ,它捕获点击手势以取消搜索。
我在调试器中发现 UISearchDisplayController 只是添加了一个私有(private)的 dimmingView,它是 UIControl 的一个实例,作为 searchContentsViewController,并且调光捕获所有触摸事件,即使 UIButton 位于 searchContentsViewController 上,实际上 在 dimmingView 下。
在我的演示代码(在 iOS SDK 5.0 中测试)中,我子类化了 @interface DimmingView:UIControl。 如果我只是单击调光 View 下按钮的边界,按钮捕获事件和调光 View 什么也捕获不了,即使我已经覆盖了touchesBegan、sendAction。 .. 方法。如果点击点超出了按钮范围,我的调光 View 会捕获事件,而按钮和调光 View 的 super View 则不会捕获任何事件。
那么UISearchDisplayController的调光 View 是如何达到防止下 View 、事件按钮、获取触摸事件的效果的呢?
最佳答案
您的调光 View 需要启用用户交互 -
dimmingView.userInteractionEnabled = YES;
通常是一个点击手势识别器,在点击时进行识别。
这将捕获其下方任何物体的触摸。如果您在调光 View 之上添加更多 subview ,那么它们将是可触摸的。
关于iPhone,在变暗 View 中捕获所有触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8543215/