[event allTouches]和[touches allObjects]之间的区别?

时间:2010-07-22 02:53:14

标签: iphone touch ipad iphone-sdk-3.2

UIResponder

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

[event allTouches][touches allObjects]之间有什么区别?

2 个答案:

答案 0 :(得分:6)

根据我的理解,如下:

[event allTouches]返回属于该事件的所有触摸。其中一些接触可能是另一个UIResponder。

例如,您可以同时点击两个视图,并且每个视图关联的响应者将通过事件的所有触摸进行调用。

[touches allObject]仅包含此响应者的触摸。因此,在大多数情况下,你所追求的是什么。

答案 1 :(得分:3)

该活动通过allTouches提供对所有触摸的访问权限。即使是当前没有激活的触摸(没有移动也没有开始没有结束而没有被取消)。

for (UITouch* touch in [[event allTouches]allObjects]) //loops through the list of all the current touches

touches是所有已更改并且符合当前事件条件的触摸列表。

for (UITouch* touch in [touches allObjects]) //loops through the list of all changed touches for this event.

所以touchesBegan:withEvent:

  • 如果一根手指触摸屏幕touches[event allTouches]将拥有相同的内容。
  • 如果第二根手指触摸屏幕touches将提供与此手指关联的UITouch,[event allTouches]将为此手指和已触摸屏幕的手指提供UITouch。
  • 如果另外两个手指在“相同”时间触摸屏幕touches将为另外2个手指提供UITouch,[event allTouches]将提供4个UITouch实例。

现在是touchesEnded:withEvent:

的情况
  • 如果抬起一根手指,touches将允许访问与该手指关联的UITouch实例,而[event allTouches]将提供4个UITouch实例,即使是结束触摸之一。