我在文件里找不到任何地方。当在我的UIView子类上调用此消息时:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event我怎样才能接触到这条消息的名字呢?
在NSSet和UIEvent上,我只能得到一组触摸,但是没有唯一的标识符,所以我可以确定是哪一种触摸触发了消息。
PS:,为什么他们会发送一个NSSet的所有触摸,也有可能从[[event allTouches] anyObject]得到相同的集
发布于 2012-04-12 17:28:30
您无法获得触摸,因为有时多次触摸会触发消息。如果用户在屏幕上有两个手指,并同时移动两个手指,那么您可以得到一个touchesMoved:withEvent:,其中两个触摸都会被更新。
您需要处理touches集中的每一个触摸。如果您已经为视图禁用了多点触摸,那么您就可以使用touches.anyObject来获取触摸,这样您就可以知道集合中只有一个触摸。但是,如果您还没有禁用多点触摸,则需要遍历集合中的所有触点。
该消息包括一组与event.allTouches分离的触点,因为用户可能有三个手指向下移动,但只能移动其中的一个或两个。touches集只包含已移动的触摸,但event.allTouches包含用户的所有触摸,包括自上次消息以来未移动的触摸。
触摸的唯一标识符是UITouch对象本身。当用户将手指放在屏幕上时,iOS会创建一个UITouch对象。当用户移动手指时,它会更新该对象。因此,您可以使用UITouch对象作为NSDictionary中的键,也可以使用objc_setAssociatedObject将自己的对象附加到它。
https://stackoverflow.com/questions/10128300
复制相似问题