在iPhone上缺少touchEnd事件

时间:2011-02-07 22:31:31

标签: iphone ios

我正在尝试为我为iPhone开发的绘图应用程序实现手掌拒绝功能,并注意到触摸事件中的一些奇怪的行为。当我将手掌放在屏幕上并持续抬起我的手的某个区域然后再将其降低时,我会获得大量的touchBegin事件,但只有少量touchEnd事件。有什么我不知道iOS的触控处理机制吗? 不应该是属于每个UITouch对象的touchEnd和touchBegin事件的数量相等吗?

我的窗口上只有一个视图,它占据整个屏幕。视图和窗口都启用了多点触控。我通过在touchBegin和touchEnd方法开头使用NSLog打印触摸次数来计算事件。所以我考虑到一个事件可能包含有关多次触摸的信息。

2 个答案:

答案 0 :(得分:3)

不要忘记为touchesCancelled事件提供处理程序。你可以在touchesBegan之后获得一个touchesCancelled电话,而且没有匹配的touchesEnded事件。

答案 1 :(得分:1)

您应该查看传递给这些方法的touchesBegan:withEvent:touchesEnded:withEvent:对象,而不是查看NSSetUITouch调用的数量。因此,例如,如果您在屏幕上放置一根手指然后放置第二根手指,则会收到两次touchesBegan:withEvent:次呼叫。如果你同时从屏幕上抬起两根手指,你会得到一个touchesEnded:withEvent:电话;传入的NSSetUITouch个对象表示两个手指被抬起。