为什么 UINavigationBar 会窃取触摸事件?

2024-02-24

我有一个自定义 UIButton,其中 UILabel 添加为子视图。仅当我触摸顶部边界下方约 15 个点时,按钮才会执行给定的选择器。当我点击该区域上方时,什么也没有发生。

我发现这并不是由错误创建按钮和标签引起的,因为在我将按钮向下移动约 15 px 后,它可以正常工作。

UPDATE我忘了说位于 UINavigationBar 下方的按钮和按钮上部的 1/3 不会收到触摸事件。

图片在这里 http://www.picamatic.com/show/2012/03/13/09/59/8282746_640x130.png

带有 4 个按钮的视图位于导航栏下方。当触摸顶部的“篮球”时,后退按钮获得触摸事件,当触摸顶部的“钢琴”时,右栏按钮(如果存在)获得触摸。如果不存在,则什么也没有发生。

我在应用程序文档中没有找到此记录功能。

我还发现this https://stackoverflow.com/questions/7806557/touch-events-within-8-pixels-of-nav-bar-not-called主题与我的问题相关,但也没有答案。


我注意到,如果您将 userInteractionEnabled 设置为 OFF,导航栏将不再“窃取”触摸。

因此,您必须对 UINavigationBar 进行子类化,并在 CustomNavigationBar 中执行以下操作:

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    if ([self pointInside:point withEvent:event]) {
        self.userInteractionEnabled = YES;
    } else {
        self.userInteractionEnabled = NO;
    }

    return [super hitTest:point withEvent:event];
}

您可以找到有关如何子类化 UINavigationBar 的信息here https://stackoverflow.com/questions/6672229/how-to-subclass-uinavigationbar-for-a-uinavigationcontroller-programatically.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 UINavigationBar 会窃取触摸事件? 的相关文章

  • 如何检查 BOOL 是否为空?

    有没有办法在将值分配给 BOOL 之前检查该值是否为 NULL Nil 例如 我在 NSDictionary 中有一个值可以是 TRUE FALSE NULL mySTUser current user following results
  • 在午夜更新应用程序徽章,并提供以下选项:应用程序未启动或在后台,徽章数量可能会减少

    我正在阅读许多有关本地通知的内容以及它们如何帮助更新应用程序徽章编号 我想在午夜更新此徽章 并将其值设置为我在午夜之前无法知道的数字 因此 如果可能的话 我想在午夜启动一个功能来更新 加载一些数据 检查要显示的数字 并将其显示在徽章上 当然
  • 检索 iPhone 中的 Outlook 联系人

    我想通过应用程序导入所有 Outlook 联系人 有什么办法可以做到这一点吗 请告诉我 您可以通过实施 Microsoft Exchange 服务器协议来实现此目的 微软MSDN http msdn microsoft com en us
  • 相当于 Interface Builder 中 UIButton 的动态类型“自动调整字体”设置?

    UILabel 有一个Dynamic Type Automatically Adjusts FontInterface Builder 属性检查器中的复选框 Interface Builder 中是否有等效项用于自动调整 UIButton
  • 获取对 iOS 应用程序中最顶层视图/窗口的引用

    我正在创建一个可重用的框架 用于在 iOS 应用程序中显示通知 我希望将通知视图添加到应用程序中其他所有内容的顶部 有点像 UIAlertView 当我初始化监听 NSNotification 事件并添加视图作为响应的管理器时 我需要获取对
  • 使用 iPhone 摄像头检测心率 [重复]

    这个问题在这里已经有答案了 可能的重复 使用摄像头检测心率 https stackoverflow com questions 9274027 detecting heart rate using the camera 我正在研究 iOS
  • CBPeripheral 名称有时为 null

    我正在开发一个应用程序来与蓝牙 LE 外围设备进行通信 我目前正在测试的外围设备是其中之一these http www ti com tool cc2540dk mini 有趣的是 有时当我发现它时 我会得到它的正确名称 SimpleBLE
  • ViewWillAppear 没有被 UISplitViewController 调用

    背景和目标 我有一个基于 UISplitViewController 的 iPad 应用程序 到目前为止它支持 4 个方向 但现在我想将其锁定为仅横向 我变了shouldAutorotateToInterfaceOrientation左视图
  • 多次添加同一个子视图来查看

    我不知道这是否可行 但我想做的是将子视图多次添加到视图中 我尝试过这样的事情 self view addSubview newView newView center CGPointMake 160 100 self view addSubv
  • iCloud loadFrom Contents - 如何处理 UIDocumentStateSavingError 和 UIDocumentStateEditingDisabled

    我在我的应用程序中使用 iCloud 来加载文本文件 加载文本文件时 当我调用时 iCloud 会调用此方法 UIDocument openWithCompletionHandler BOOL success etc BOOL loadFr
  • 私人 iPhone 应用程序?

    我有兴趣编写连接到内部网或外部网的应用程序 换句话说 我想为我的客户制作私人应用程序 但我不希望每个人都能够访问它并能够下载它 您知道是否有一种方法可以将企业应用程序仅分发给特定的人 Android 也做同样的事情吗 The iPhone
  • UIWebView 中的 PDF

    我正在创建一个杂志应用程序 我在 UIWebView 中显示杂志的每一页 不过 Web 视图不会用 PDF 填满屏幕 它周围有一个边界 我怎样才能全屏显示它 我还没有使用 UIWebView 尝试过此操作 但您也许可以执行类似的操作来以编程
  • 带有 Core Data 对象的动态 UITableView 高度

    过去几天我一直在试图解决一个谜团 即为什么我的批处理大小为 20 的 NSFetchedResultsController 总是在获取完成后立即错误 即加载到内存中 我的所有对象 从而导致请求需要约 20 秒 事实证明 这是因为在我的 he
  • 有什么方法可以让我知道按屏幕的力度有多大

    我想找到触摸的压力 我只是不知道如何在不越狱并获取原始触摸数据的情况下实现该结果 有谁知道我会怎么做 你无法获得来自SDK的压力nor未记录的方法 然而你can使用未记录的方法检测触摸的大小 在 GSEvent UIEvent 的较低级别表
  • 为什么 Xcode 4 不会对我未完整实现 UITableViewDataSource 协议发出警告?

    如果我在 Xcode 中使用以下代码声明并不完全实现我自己的协议 一些协议 h protocol SomeProtocol
  • 确定 NSView 是否绘制的正确方法

    有没有正确的方法来确定是否NSView实际上是否在当前视图层次结构中绘制 考虑以下情况 视图完全在屏幕外 不是强制性的 该视图不在视图层次结构的顶部 The isHidden and isHiddenOrHasHiddenAncestor不
  • iPhone 快照,包括键盘

    我正在寻找拍摄整个 iPhone 屏幕 包括键盘 的正确方法 我找到了一些截取屏幕的代码 CGRect screenCaptureRect UIScreen mainScreen bounds UIView viewWhereYouWant
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • 使用 Storyboard 时获取 NSManagedObjectContext

    目标是获取当前的 NSManagedObjectContext 以便使用 Core Data 在 iOS 4 3 中 我将 UINavigationController 的委托设置为 AppDelegate 如下所示 在 AppDelega
  • 将 iPhone 上的 stderr 写入文件和控制台

    我正在遵循答案中的建议here https stackoverflow com questions 5179108 iphone how to read application logs from device用于将 iOS 设备上的 NS

随机推荐

  • 将 CA 签名的 JKS 密钥库转换为 PEM

    我有一个带有 CA 签名证书的 JKS 密钥库 我需要将其导出为 PEM 格式才能与 nginx 一起使用 我需要以包含整个链的方式进行操作 以便我的客户可以验证签名 如果我做类似的事情 keytool exportcert keystor
  • pip 安装后没有名为 imutils.perspective 的模块

    我正在尝试遵循本教程 该教程需要imtools 看起来我已经安装了这个包 但Python编译器找不到它 这里发生了什么 教程 http www pyimagesearch com 2016 10 03 bubble sheet multip
  • 带 xcframework 的 Flutter 插件仅适用于不在 ios 模拟器中的设备

    我创建了一个颤振插件 通过在 Flutter 中运行示例应用程序 我收到此错误 Error Swift Compiler Error Xcode No such module AusweisApp2 这是我的文件夹结构 podspec 文件
  • 如何处理移动设备发送的图像?

    我的一位同事正在开发一款 iPhone 应用程序 该应用程序将允许用户通过我的 API 在我的网站上发布图像 我正在构建 API 的一部分 用于接受和处理图像 移动开发人员发送的标头如下 Content Disposition form d
  • Simplecursoradaptor 内的自定义文本字体

    我制作了一个使用 SimpleCursoradapter 的应用程序 String from new String title notes image int to new int R id esodaTextView R id amoun
  • Psycopg2 单引号异常

    我在我的应用程序中使用 psycopg2 一切都很好 但是 当我插入数据时包含单引号 然后 python 抛出下面的异常
  • WebDriverException:消息:握手中缺少“marionette Protocol”字段

    我目前正在尝试在本地运行 robotsframework 测试脚本 Ubuntu 12 04 LTS 64 位 我遇到的问题是无法在 Open Browser 中启动 FF 浏览器 以下是我所拥有的设置的详细信息 规格 火狐浏览器 v26
  • 使用 Cookie 的购物车

    我正在尝试使用 cookie 会话制作一个简单的购物车 根据此代码片段 它仅包含 4 个项目
  • Django - 如何将多个参数传递给 url 模板标签

    在我的 urls py 中我有 r P
  • Rstudio 中的 R 找不到 rmarkdown 包

    我第一次尝试在 PC 上的 Rstudio 0 98 953 中使用 rmarkdown 我已升级到最新版本的 R 3 1 1 和 R studio 本问题末尾提供了 sessionInfo 的输出 据我了解 rmarkdown 应该包含在
  • 使用变量访问对象的属性

    如果我有一个对象 具有名称 电话号码等属性 我如何使用变量在 Javascript 中访问这些属性 我想通过执行以下操作来访问 javascript 中的属性名称 object name bob phone number 911 prope
  • powershell 运行 pip

    我想通过 powershell 脚本运行 python 模块升级 第一行有效 但我不知道如何正确读入文件 第二条点线 我收到此错误 Could not find a version that satisfies the requiremen
  • NFCTagReaderSession“缺少所需的权利”

    我正在深入研究 iOS 13 的新 CoreNFC 功能 并且正在努力让 NFCTagReaderSession 正常工作 设置我的权利并实例化 NFCTagReaderSession 和委托后 我尝试通过调用来启动会话nfcTagRead
  • Swift:如何从 UIImage 数组中提取图像文件名

    如果我有一个像这样的 UIImage 数组 newImageArray UIImage named Red png UIImage named Green png UIImage named Blue png UIImage named Y
  • 如何使用 DotNetZip 从 zip 中提取 XML 文件

    我使用的是最新版本的 DotNetZip 并且有一个包含 5 个 XML 的 zip 文件 我想打开 zip 读取 XML 文件并使用 XML 的值设置一个字符串 我怎样才能做到这一点 Code thats my old way of do
  • 使用 Selenium 的模态对话框窗口

    因此 我尝试使用 Selenium 导航到 IE9 中的页面 该页面在加载页面时显示存在证书错误 使用 AutoIT 我可以让它在浏览器中单击 然后按 TAB 两次 然后按 Enter 键 没有问题 然而 当它继续时 它会抛出 模态对话框存
  • 如何避免未使用的 setState 函数? React useState 可以在没有 setter 的情况下创建吗?

    我目前正在减少 删除 React 站点上的 npm 警告 大量警告是由 setState 函数 未使用 引起的 如下所示 const state setState useState some state 以下哪项是消除这些警告的更好方法 或
  • 基本高性能数据真实性

    我不是母语人士 术语可能不正确 对此感到抱歉 我正在 AVR 微控制器之间通过无线电传输数据供个人使用 并希望客户能够证明传输数据的真实性 因为它来自授权客户之一 这意味着我不需要不可否认性并且能够预先定义共享密钥 我对不同的方法进行了一些
  • Xcode 8:以 NSException 类型的未捕获异常终止

    我是新手 我遇到了这个错误 我到处查找 但找不到解决方案 任何帮助将非常感激 0 CoreFoundation 0x00000001102bb34b exceptionPreprocess 171 1 libobjc A dylib 0x0
  • 为什么 UINavigationBar 会窃取触摸事件?

    我有一个自定义 UIButton 其中 UILabel 添加为子视图 仅当我触摸顶部边界下方约 15 个点时 按钮才会执行给定的选择器 当我点击该区域上方时 什么也没有发生 我发现这并不是由错误创建按钮和标签引起的 因为在我将按钮向下移动约