我开始使用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次的触摸,您将不会收到“触动”消息。更糟糕的是,在你将所有手指从屏幕上移开之前,你不会可靠地收到所有的“修饰”信息。
如果你用6个手指触摸,然后松开3个,然后再按住另外3个手指再触摸,你会得到“向下触摸”,但如果你松开它,有时你会得到“向上触摸”,有时你不会。
这几乎使跟踪触摸变得不可能,并且通常会导致触摸在传递给我的触摸管理器时被永久“卡住”。
有没有更好的API来获取触摸输入?是否至少有一个函数可以调用以可靠地获取屏幕当前是否被触摸?这样我可以在所有手指都松开时重置我的经理。
编辑:
是的,一定是我丢了什么东西。因为现在计算器做了一些我不能做的事情。
它一次只接受一次触摸,如果屏幕上有多个触摸,它会“取消”所有触摸,但它必须跟踪它们,以知道屏幕上有“多个”触摸。
如果我触摸屏幕,按钮会下降,现在如果我再向屏幕添加一个触摸,按钮会释放,酷,不允许一次以上的触摸。现在,如果我在屏幕上多加4个手指,总共6个手指,屏幕应该会断开,当我释放这6个手指时,应用程序不应该得到任何“向上”的回调。然而,当我释放所有的手指并再次触摸时,按钮会下降,所以它知道我释放了所有的手指!怎么办??