我有以下问题:
如果我用一根手指(即中指)点击触摸屏并接近手指上升的那一刻,我用第二根手指(即食指)靠近另一根手指所在的区域轻拍,而不是得到一个下来的事件,我得到了第一根手指的移动 第二根手指的向下位置。重现它有点棘手,但它是可重复的。
我有一个UIView,并且接触我有以下内容:
- (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event
{
for (UITouch *touch in touches) {
int index = (int)touch;
CGPoint position = [touch locationInView:self];
NSLog(@"DOWN %d x:%f y:%f", index, position.x, position.y);
}
}
- (void) touchesMoved: (NSSet *) touches withEvent: (UIEvent *) event
{
for (UITouch *touch in touches) {
int index = (int)touch;
CGPoint position = [touch locationInView:self];
NSLog(@"MOVE %d x:%f y:%f", index, position.x, position.y);
}
}
- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event
{
for (UITouch *touch in touches) {
int index = (int)touch;
CGPoint position = [touch locationInView:self];
NSLog(@"UP %d %f %f", index, position.x, position.y);
}
}
当我重现它时,我有以下输出
DOWN 510365696 x:891.500000 y:197.000000
MOVE 510365696 x:774.000000 y:263.000000
MOVE 510365696 x:766.000000 y:268.500000
UP 510365696 764.500000 270.000000
其中上述MOVE是第二个手指的向下位置。你也可以看到第一根手指上的UP应该是pos(891,197)完全丢失...
我知道我可以检测到这些“跳跃”但是没有办法将它们与快速移动的手指区分开来。
我感谢任何帮助。
答案 0 :(得分:0)
当我尝试使用相同的code
时,我观察到的是,即使是手指中最轻微的移动也会被检测到。
当您使用第一根手指轻按并按住它时,如果您使用第二根手指点按,则第二根手指位置不会登录。实际上,记录的是第一根手指点的轻微变化,这被观察为 移动 动作。
记录的 向上 位置也靠近第一根手指触摸点。
第二根手指的 down 操作永远不会被检测到。
我认为问题是Multiple Touch
选项未启用。
选中您的视图后,在Utilities
窗格中,选择Attributes Inspector
,然后从勾选 Multiple Touch
复选框。
这是一个截图:
启用Multiple Touch
时的实际日志将如下所示:
DOWN 475396224 x:229.000000 y:6.500000
DOWN 475411840 x:102.000000 y:50.000000
MOVE 475396224 x:231.500000 y:8.000000
MOVE 475411840 x:104.500000 y:51.500000
UP 475396224 231.500000 8.000000
UP 475411840 104.500000 51.500000
希望这有帮助!