首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标C:获取触发UIEvent的UIEvent

目标C:获取触发UIEvent的UIEvent
EN

Stack Overflow用户
提问于 2012-04-12 17:02:07
回答 1查看 3.2K关注 0票数 3

我在文件里找不到任何地方。当在我的UIView子类上调用此消息时:

代码语言:javascript
复制
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

我怎样才能接触到这条消息的名字呢?

在NSSet和UIEvent上,我只能得到一组触摸,但是没有唯一的标识符,所以我可以确定是哪一种触摸触发了消息。

PS:,为什么他们会发送一个NSSet的所有触摸,也有可能从[[event allTouches] anyObject]得到相同的集

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-12 17:28:30

您无法获得触摸,因为有时多次触摸会触发消息。如果用户在屏幕上有两个手指,并同时移动两个手指,那么您可以得到一个touchesMoved:withEvent:,其中两个触摸都会被更新。

您需要处理touches集中的每一个触摸。如果您已经为视图禁用了多点触摸,那么您就可以使用touches.anyObject来获取触摸,这样您就可以知道集合中只有一个触摸。但是,如果您还没有禁用多点触摸,则需要遍历集合中的所有触点。

该消息包括一组与event.allTouches分离的触点,因为用户可能有三个手指向下移动,但只能移动其中的一个或两个。touches集只包含已移动的触摸,但event.allTouches包含用户的所有触摸,包括自上次消息以来未移动的触摸。

触摸的唯一标识符是UITouch对象本身。当用户将手指放在屏幕上时,iOS会创建一个UITouch对象。当用户移动手指时,它会更新该对象。因此,您可以使用UITouch对象作为NSDictionary中的键,也可以使用objc_setAssociatedObject将自己的对象附加到它。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10128300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档