我开始使用 MoveMe 示例来使触摸输入正常工作。
基本上,我定义了这两个回调函数来获取我的触摸输入:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
for ( UITouch* touch in touches )
{
printf("touch down");
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
for ( UITouch* touch in touches )
{
printf("touch up");
}
}
这可以正常工作,直到您一次在屏幕上触摸超过 5 次。然后它会停止正常工作,如果屏幕上的触摸超过 5 次,您将不会收到“touch down”消息。更糟糕的是,除非您将所有手指从屏幕上移开,否则您将无法可靠地获得所有“修饰”消息。
如果你用 6 个手指触摸,然后松开 3 个手指,然后在其他 3 个手指仍然向下触摸的情况下再次触摸,你会得到“触摸向下”,但如果你松开它,有时你会得到“触摸向上”,有时你不会。
这几乎使跟踪触摸变得不可能,并且通常会导致触摸在传递给我的触摸管理器时永久“卡住”。
是否有更好的 api 用于获取触摸输入?是否至少有一个函数可以调用来可靠地获取当前是否触摸屏幕?这样,当所有手指都松开时,我可以重置我的经理。
编辑:
对,一定有我遗漏的东西。因为目前计算器做了一些我不能用这些回调做的事情。
它一次只接受一个触摸,如果屏幕上的触摸不止一个,它会“取消”所有触摸,但它必须跟踪它们才能知道屏幕上有“多个”触摸。
如果我触摸屏幕按钮会下降,现在如果我在屏幕上添加另一个触摸,按钮就会释放,很酷,不允许超过一次触摸。现在,如果我在屏幕上再添加 4 个手指,总共 6 个,屏幕应该会坏掉,当我释放这 6 个手指时,应用程序不应该得到任何“向上”回调。然而,当我释放所有手指并再次触摸时,按钮按下,所以它知道我释放了所有手指!如何??