注意:这是对以下内容的扩展(和澄清)一个问题 https://stackoverflow.com/questions/3918739/determining-which-view-touch-was-in-for-all-touches我昨天问过。
我正在进行一个研究项目,我想记录 iPhone 应用程序中用户的所有触摸。实验结束后,我将能够下载数据并在 Excel 或(更有可能)Matlab 中处理它,并确定他们单击某些按钮的次数、单击某些按钮的时间等。为此,我需要要知道:
a) 当他们接触时
b) 他们触摸的地方
c) 他们触及了哪个视图
前两个很容易,但第三个我遇到了麻烦。我知道我可以这样做来获取对所触摸的 UIView 的引用:
CGPoint locationPoint = [[touches anyObject] locationInView:self];
UIView* viewYouWishToObtain = [self hitTest:locationPoint withEvent:event];
但是,这只会给我一个指向视图的指针,而不是所触摸的视图的名称。我可以为每个视图分配一个标签,但是每次创建新视图时,我都需要记住对其进行标记(或者,在初始化时记录每个视图的地址,并在触摸视图时记录它)。子类化 UIView 并添加自动标记并不是真正的选择,因为我正在创建其他 UIButtons 和 UISliders,并且还需要对它们进行子类化,这似乎不是一个很好的解决方案。
有谁知道一种干净、简单的方法来做到这一点?
对于“他们触及了哪个视图”,您需要什么信息?
也许您可以使用类别向 UIView 添加方法。此方法将生成一个包含有关视图的信息的字符串。例如:
- 它的类型例如UI按钮等
- 它的大小和位置
- 视图的标题(如果有)(例如按钮标题)
- 父视图类型和标题
- 其他东西例如视图是否已启用,它处于什么状态。您喜欢的任何内容。
例如:“Type:UIButton Title:"Back" Rect:{3,5,40,25}”或类似的字符串。
这非常干净,并为您提供了大量可供使用的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)