iPhone,在变暗 View 中捕获所有触摸事件

标签 iphone ios

我正在尝试制作一个像 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/

相关文章:

ios - Swift - 获取图像创建日期和位置

ios - imageWithCGImage : GCD memory issue

ios - UINavigationitem 自定义 rightBarButtonItems

iphone - 在 iPhone 上拍摄多张照片

ios - 为什么 Interface Builder 中的 "inferred"设置不起作用?

java - 使用 Java-PNS 向 iPhone 发送推送通知时出现错误?

iphone - 我怎样才能用 AVPlayer 播放 pcm

iphone - 具有三个 Controller 的 UISplitViewController

iphone - 如何从 Core Location 获取 gps 点的距离?

iphone - 将 iphone 应用程序从 xcode 部署到 iphone