关于在应用程序中调用事件方法的行为,我多次阅读过iPhone编程指南。
从指南中说: 当手指第一次触摸屏幕时,会调用touchesBegan。
当屏幕上的手指移动时,会调用touchesMoved。
当手指抬离屏幕时,会调用touchesEnded。
问题变得有点模糊,涉及多个手指:
即使Multi-touch Interaction标志设置为NO,应用程序仍会继续调用当前正在跟踪另一个触摸的视图的touchesBegan方法。这对我来说似乎很直观。
这是正确的行为吗?我认为新的UITouch(甚至添加到被跟踪的当前事件)不会触发touchesBegan方法。
值得注意的是,我在IB中以及以编程方式设置此标志以确保我没有遗漏某些内容。
谢谢, 科里
答案 0 :(得分:0)
是的,我相信这是正确的行为。您可以跟踪每个触摸事件的位置,因此我认为您只需要构建逻辑,以便处理:
UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
获得第一次触摸,objectAtIndex:1获得第二次触摸。我认为它最多可达四到五个(不确定,请参阅文档)。
祝你好运!答案 1 :(得分:0)
我弄清楚了我的问题,但首先要澄清多次触摸的正确功能:
如果您的视图的multipleTouchEnabled标志设置为NO,则如果第二次触摸应用于屏幕,则不应触发该视图的touchesBegan方法。
有了这个,解决我的问题:
我的观点包含多个子视图。视图负责处理自身和子视图的触摸。
当我的代码运行不正常时,我有了子视图的userInteractionEnabled = YES。这意味着当触摸子视图时,它会将触摸转发到超级视图,无论超级视图是否跟踪另一个触摸。
换句话说,虽然UIApplication尊重视图的multiTouchEnabled标志,但响应器链中的其他视图却没有。