1

我制作了一个应用程序,我想让它兼容多点触控。我试过环顾四周,但答案并不特定于我。这是我所做的:

1)我的编码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

[self touchesMoved:touches withEvent:event];
if (gameState == kGameStatePaused) {(gameState = kGameStateRunning);}
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if(gameState == kGameStateRunning) {

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touch.view];
    if(location.x > 400) {

        CGPoint yLocation = CGPointMake(playerPaddle.center.x, location.y);
        playerPaddle.center = yLocation;
    }

    if (gameStyle == kGameStyleTwoP) {
        if(location.x < 100) {

            CGPoint yLocation2 = CGPointMake(computerPaddle.center.x, location.y);
            computerPaddle.center = yLocation2;
        }
    }
}

2)我已经进入界面生成器并选中了启用多点触控的框

3)我构建并运行我的应用程序,它可以正常打开,当我去测试多点触控时,我按住“选项键”并单击并移动鼠标

4)(我试图让 computerPaddle 和 playerPaddle 都移动)但一次只有一个作品

我必须尝试修复它,但我不明白我哪里出错了。

任何帮助都是有用的。谢谢。

4

2 回答 2

10

multipleTouchEnabled UIView 上有一个名为的属性,您可以将其设置为 YES 以启用它(默认为 NO)。

此外,您应该循环处理touches您收到的集合中的所有触摸touchesMoved

于 2012-05-31T12:38:15.957 回答
2

看这条线

UITouch *touch = [[event allTouches] anyObject];

您只需轻轻一按,忽略休息,这就是为什么只有一件事可以移动

所以用for循环替换应该可以解决问题

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if(gameState == kGameStateRunning) {

    for (UITouch *touch in [event allTouches]) {
    CGPoint location = [touch locationInView:touch.view];
    if(location.x > 400) {

        CGPoint yLocation = CGPointMake(playerPaddle.center.x, location.y);
        playerPaddle.center = yLocation;
    }

    if (gameStyle == kGameStyleTwoP) {
        if(location.x < 100) {

            CGPoint yLocation2 = CGPointMake(computerPaddle.center.x, location.y);
            computerPaddle.center = yLocation2;
        }
    }
}
}
于 2012-05-31T12:39:37.340 回答