检测视图中的任何触摸(iPhone SDK)

2024-02-16

我目前正在使用...

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

来检测滑动。我已经一切正常了。唯一的问题是,如果用户触摸某个东西(例如 UIButton 或其他东西)的顶部- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {不被调用。是否有类似 TouchBegan 的东西,但如果我触摸视图上的任何地方,它就会起作用?

提前致谢, 大卫


触摸事件的传播方式如下:

  1. UIViews 被发送-hitTest:withEvent:递归直到某个 UIView 确定触摸位于其边界内,而不是位于任何启用用户交互的子视图内。
  2. UIWindow发送-touchesBegan:withEvent:以及步骤 1 中返回的 UIView 的朋友,忽略任何视图层次结构。

换句话说,-hitTest:withEvent:用于确定触摸的目标视图,之后目标视图获取所有-触摸...:withEvent:消息。如果您需要拦截可能从 UIButton 开始的滑动手势,则必须覆盖-hitTest:withEvent:回来self.

但这种方法有一个问题。一旦你这样做了,你的按钮将停止工作,因为它不会得到任何-触摸...:withEvent:消息。除非检测到滑动手势,否则您必须手动将触摸转发到子视图。这是一个严重的痛苦,而且根本不能保证有效。这就是 UIGestureRecognizers 的用途。

另一种方法是子类化 UIWindow 并覆盖-发送事件:,这可能更适合您的情况。

无论如何,请务必阅读事件处理 http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/彻底记录。除其他可怕的警告外,它还说:

UIKit框架的类是 并非设计用于接收触摸 不受其约束;以程序化方式 术语,这意味着视图 UITouch 对象的属性必须 保留对框架的引用 物体以便触摸 处理。

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

检测视图中的任何触摸(iPhone SDK) 的相关文章

  • 带有子视图的 UIView beginAnimations

    我有一个漂亮且简单的视图 缩放 动画 它以一个点开始并动画到全屏尺寸 UIView beginAnimations nil context NULL UIView setAnimationBeginsFromCurrentState YES
  • 当我从我转向的视图控制器返回时,为什么我的 UITableView 的格式完全出错了?

    我有一个UITableView使用自定义单元格 其中有一些标签可以动态决定单元格的高度 当我点击一个单元格并转到一个新的视图控制器时 返回后所有单元格的格式完全混乱 我无法弄清楚是什么导致了它 这是细胞通常的样子 我对它们设置了一些非常基本
  • NSDictionary 上的 NSPredicate

    我试图根据字母表在表格视图中创建部分 并在这些部分下按字母顺序对我的条目进行排序 我已经收集了 bandArrayIndex 中 bandArray 每个条目的第一个字母 现在我尝试使用 NSPredicate 来计算每个字母有多少个 我正
  • 当应用程序退出活动状态时,MPMovies PlayerViewController 被解雇

    当我将 iPhone 设置为睡眠状态 切换到另一个应用程序等 然后再次返回时 之前的可见内容MPMoviePlayerViewController 提出与presentMoviePlayerViewControllerAnimated 已经
  • UITableview 中的水平和垂直滚动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I want to make a lineup for a festival You can see what I want to a
  • 将第 3 方库 ZXing 导入 Xcode

    我尝试了多种方法将第 3 方库 ZXing 导入我的 iOS 应用程序 但所有方法都很痛苦 或者根本不起作用 如果有人可以建议我做错了什么 或者提出导入 ZXing 等库的更好方法 我将非常感激 一定比这个容易 这就是我所做的 结果是 My
  • 在 Objective-C 中比较 2 个字符串

    我写了以下代码 if depSelectedIndice gt 1 comSelectedIndice gt 1 NSLog depart elemet d depSelectedIndice NSLog depart elemet d c
  • 使用 iOS 8 自定义键盘发送图像?

    我一直在为 iOS 8 开发自定义键盘 但在尝试使用键盘发送图像时偶然发现了一个问题 我做了一些研究 似乎没有一种简单的方法可以做到这一点UITextDocumentProxy因为只有NSStrings被允许 我是否忽略了使用自定义键盘发送
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • 如何知道用户何时更改设置包

    我让用户在 iPhone 的设置区域中更改他们的设置 在下一次网络同步期间 我想将用户更改发送到服务器 但前提是做出改变 但是我如何知道用户何时在设置区域中进行了更改 如果可以的话 我想避免选择总是发送信息 无论是否更改 或者首先从服务器获
  • 网站在 iPhone 屏幕右侧显示空白区域

    我遇到问题http eiglaw com http eiglaw com iPhone 屏幕右侧显示约 25 像素宽的空白 边框 我在 stackoverflow 上研究了这个问题 这些帖子是相关的 但是当我尝试提供的各种解决方案时 我无法
  • 如何将 NSDecimal 值转换为 NSInteger 值?

    我遇到一种情况 我得到一个 NSDecimal 并且我需要一个 NSInteger 我确实知道这是一个非常小的值 这是绝对肯定的 它不会大于 100 所以将它转换为 NSInteger 就完全没问题 不会发生溢出 这怎么可能做到呢 NSDe
  • Parse.com 从相关 PFObject 获取 PFUser

    我正在将照片保存为 PFObject 解析 并使用 PFUser currentUser 用户 ID 作为其键之一 我想在表格视图中显示照片以及该 PFUser 的详细信息 但是当我尝试获取用户时 PFUser user self phot
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • 以编程方式使用 Stack Overflow 进行身份验证

    我想在我的 iPhone 应用程序中添加赞成和反对投票 MyStacks http itunes apple com gb app mystacks id360030953 mt 8 为此 我需要能够使用 Stack Overflow 对用
  • UIPanGestureRecognizer 对坐标的限制

    我在主 UIView 中添加了一个子视图 称为panel 并且我向其中添加了gestureRecognizer 因为我希望它只能在Y轴上拖动并且只能在某些限制下 即160 300 超过300它不能拖动 我以这种方式实现了手势处理 IBAct
  • AVAssetExportSession 为零 iPhone 7 - Plus 模拟器

    AVAssetExportSession在 iPhone 6 及以下版本上运行良好 但在 iPhone 7 iPhone 7 Plus 模拟器上运行不佳 Xcode 8 0 这段代码return nil在exportSession中 当在i
  • 在 iPhone 中缝合图片

    我想并排缝合2张png 在Cocoa中 我会使用 NSImage initWithSize 然后只是drawInRect 但是 UIImage 没有 initWithSize 类 我现在该怎么做 Use UIGraphicsBeginIma
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • 在发生更改事件时将货币格式重新应用到 UITextField

    我正在使用一个包含本地化货币值的 UITextField 我看过很多关于如何使用此功能的帖子 但我的问题是 如何在每次按键后将货币格式重新应用到 UITextField 我知道我可以通过以下方式设置和使用货币格式化程序 NSNumberFo

随机推荐

  • Ajax 调用下载从 RESTful 服务返回的文件

    我对 AJAX 相当陌生 我正在使用 AJAX 向服务器发送请求 该服务返回一个文本文件 但返回数据时没有出现下载框 返回文件的rest服务如下 Path examples public class ExampleCodesRest POS
  • 在 Shiny 中下载 RenderTable() 数据帧上的处理程序

    我有一个闪亮的应用程序 它采用如下所示的 csv 文件 category action 并将其输入到数据框中以仅使用 action 过滤类别 可复制的应用程序 UI library shiny shinyUI fluidPage title
  • 再次为该片段创建 ViewModel

    我在 MainFragment 中创建视图模型 Override public void onActivityCreated Nullable Bundle savedInstanceState super onActivityCreate
  • Javafx 2 图表通过手绘调整大小

    我有一个在 JavaFX 2 0 中徒手绘制 XYChart 的代码 调整图表大小时遇到 问题 当我调整大小时 我遇到了徒手绘制的翻译问题 当我调整大小时 新绘图最初看起来超出了比例 但经过一点 图表移动 后 绘图它会自行修复 我该如何改进
  • 带取消功能的VBA密码输入

    我一直在使用 Daniel Klann 编写的标准密码文本框 http www ozgrid com forum showthread php t 72794 http www ozgrid com forum showthread php
  • 重命名包名称后出现“找不到符号 R”错误

    重命名我的项目包名称 使用重构 后 我收到此错误 Error 7 44 error cannot find symbol class R 我的全部R用法无效 我尝试手动修复它 但它对我不起作用 Invalidate chases Resta
  • Next.js 中未定义 localstorage

    我正在尝试将应用程序从 React 移至 Next 在 React 中我没有收到此代码的错误 let authTokens setAuthTokens useState gt localStorage getItem authTokens
  • MongoDB TTL过期检查的更改周期

    关于基于TTL索引的文档过期MongoDB 文档 https docs mongodb com manual core index ttl timing of the delete operation says 删除过期文档的后台任务每 6
  • 选项卡切换事件可用于 Google Chrome 扩展吗?

    作为 Google Chrome 扩展 是否可以监听选项卡切换 也就是说 在标签切换刚刚发生时收到通知 I want to make an extension that in fullscreen when switching tabs w
  • 如何使用 localstorage / ajax jquery 获取从第一页到第二页的单选按钮值

    目前正在处理本地存储 在第一页中 如果用户选择第二页面板中的第一个单选按钮 则必须隐藏两个单选按钮 如果用户选择单选按钮 则第二页验证中的一个文本字段不应发生 我不知道如何使用 localStorage 或 ajax 哪一个是最好的 当我看
  • Github 自述文件中的 .gif 水平居中

    我正在尝试将 gif 居中 这是 markdown 代码 Demo demo gif 上面的代码将我的 gif 对齐到左侧 见下图 所以 我尝试将 markdown 放入其中 p 像这样的标签 但它不起作用 p p align center
  • 如何在clickhouse中根据日期和时间段选择数据

    我想通过两者过滤一些数据yyyymmdd 日期 和hhmmss 时间 但是clickhouse不支持time类型 所以我选择datetime将它们结合起来 但如何做这样的事情 这是代码dolphindb 它支持second类型来表示hhmm
  • svnrdump 转储和 svnadmin 转储之间的区别

    我需要 svn 存储库的转储 我找到了两个解决方案 svnrdump dump And svnadmin dump svnrdump dump是相同的svnadmin dump 如果不是 这两个命令有什么区别 svnrdump生成相同的转储
  • UWP ListView DataTemplate 绑定到项目而不是属性

    如何将数据模板中的项目绑定到项目本身 而不是该项目的属性 我有一个将项目作为模型的用户控件 鉴于这些模型 public class Car public string Name get set public Color color get
  • QImage/QPixmap 大小限制?

    是否有任何已知的尺寸 空间限制QPixmap and or QImage记录的对象 我没有找到任何与此相关的有用信息 我目前在 OSX 和 Windows 上使用 Qt 4 7 3 我特别感兴趣的是 宽度 高度限制 限制取决于颜色格式 32
  • UTF-8 和 ISO-8859-1 有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有什么区别UTF 8 https en wikipedia org wiki UTF 8 and ISO 8859 1 https e
  • JSF:commandLink 作为 outputFormat 的参数

    我正在国际化一些 JSF 文件 因此正在外部化字符串 以及使用占位符的字符串连接 我对 JSF 的经验很少 今天和昨天 所以如果我的问题有一个明显的答案 请原谅 我一直在成功地使用 h outputFormat 标记 和 f param 标
  • 用户窗体根据屏幕分辨率调整大小

    我有一个 Excel 用户表单 我想在打开时调整大小以适应屏幕分辨率 我通过得到高度和宽度Application Height and Application Width 通常使用这两个参数和以下代码 应该可以解决问题 Me Top App
  • 以编程方式最大化窗口并防止用户更改窗口状态

    如何以编程方式最大化窗口 以便窗口一旦打开就无法调整大小 达到最大化状态 例如 最大化 Internet Explorer 并查看它 我将 FormWindowState 属性设置为 this WindowState FormWindowS
  • 检测视图中的任何触摸(iPhone SDK)

    我目前正在使用 void touchesBegan NSSet touches withEvent UIEvent event void touchesEnded NSSet touches withEvent UIEvent event