在UIResponder
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
[event allTouches]
和[touches allObjects]
之间有什么区别?
答案 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实例,即使是结束触摸之一。