只有在视图上没有触摸时才调用touchesEnded

时间:2014-11-27 19:44:34

标签: touch sprite-kit

目前,如果我在屏幕上用两根手指敲击并移除其中一根手指但仍然用另一根手指按压,则会调用touchesEnded - 方法。

但我希望如果视图中没有更多的触摸,该方法只能执行某些操作。

如果场景中仍有触摸,我如何在touchesEnded - 方法中查看?

1 个答案:

答案 0 :(得分:0)

每次为屏幕上发生的每次触摸调用touchesBegantouchesEnded方法。屏幕上的每次触摸都与UITouch对象相关联。您可以在(NSSet*) touches对象中找到与事件关联的所有触摸,这些触摸是这些方法的参数。

您需要使用全局变量跟踪原始触摸。

在你的gameScene的实施中:

@implementation GameScene
{
    UITouch* currentTouch; //This variable will keep track of the touch.
}

现在,在touchesBegan方法中:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    for (UITouch *touch in touches) {
        if (currentTouch == nil) {
            currentTouch = touch;

            //Handle touch code here, not outside.

        }
    }
}

在touchesEnded方法中:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UITouch *touch in touches) {

        if ([touch isEqual:currentTouch]) {
            //This is the tracked touch, handle touch ending here.

            currentTouch = nil;
        }
    }
}

以上代码可以帮助您处理单个触摸对象的触摸。

为了更好地理解,您可以阅读Apple的触摸操作指南here