- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在 iPhone 上开发一个简单的游戏,我从一个基于 View 的应用程序开始,通过 UIViewController
我正在加载一个包含更多 的自定义
和一些 UIView
>UIViewUIImageView
。我想检测某些 UIImageView
上的触摸事件,但到目前为止我做不到。
我创建了第二个项目用于测试目的,并认为 UIImageView
在层次结构如下时处理触摸事件:
UIViewController
->UIView
->UIImageView
,
但是当它像:
UIViewController
->UIView
->UIView
->UIImageView
他们没有被发现。
注意事项:
- userInteractionEnabled
在所有情况下都是YES
- 我上面提到的所有 UIViews
和 UIImageViews
都是自定义子类。
当自定义 UIImageView
在 View 层次结构中变得更深时,您能想到为什么无法接收触摸事件的任何原因吗?
最佳答案
触摸需要经过漫长而迂回的路线才能到达目的地。正式地,它们沿着响应者链上升,从第一个响应者开始,然后从最深的包含触摸的 View 到它的 View Controller ,再到下一个包含触摸的 View ,等等。
但实际情况要复杂得多,因为在找到最深的包含触摸的 View 时,触摸本质上是通过调用 hitTest:withEvent 来“询问”该信息的最高级别 View :
方法。这允许某些 super View 劫持触摸,这可能非常有用,例如 UIScrollView
,它有时会在其 subview 知道发生了什么之前执行操作(滚动/缩放)。
这里有一些提示可以帮助确定 View 可能不响应触摸的原因:
[hitTest:withEvent:
] 1在您的每个 View 和 NSLog
被击中时查看响应者链正在考虑谁。UIView
方法 recursiveDescription
在运行时检查所有 View 的框架。默认情况下, View 显示超出其框架大小,因此它们可能看起来不错,但逻辑上的尺寸小于视觉上的尺寸——并且触摸响应基于逻辑(而非视觉)尺寸。UIButton
时调用您的 - [MyClass buttonPressed] 方法,请仔细检查您是否添加了 MyClass
实例并@selector(buttonPressed)
作为该按钮的目标/操作对。NSLog
消息覆盖 touchesBegan:withEvent:
以查看触摸在响应链上的哪个位置。而且,您已经知道这一点,但要注意 userInteractionEnabled
标志!
希望这足以隔离问题。
关于iphone - 如何在 UIView 的深层层次结构中检测 UIImageView 上的触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2546375/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!