Ios 关闭SKScene/Sprite工具包中的同时触摸

Ios 关闭SKScene/Sprite工具包中的同时触摸,ios,sprite-kit,multi-touch,skscene,Ios,Sprite Kit,Multi Touch,Skscene,我目前正在开发一款游戏,用户一次只能用一个手指触摸。我正在使用SKScene并尝试搜索禁用多点触控功能的方法,但没有结果。我想在调用touchesbreated()和touchesend()之间的所有触摸时手动调用“return”,但该方法也有缺陷() 因此,我的问题是:如何在SKScene中一次只允许一次触摸?SKView继承了UIView,因此,在didMoveToView中添加: self.view.multipleTouchEnabled = NO; 具有讽刺意味的是,在几天没有发现任

我目前正在开发一款游戏,用户一次只能用一个手指触摸。我正在使用
SKScene
并尝试搜索禁用多点触控功能的方法,但没有结果。我想在调用
touchesbreated()
touchesend()
之间的所有触摸时手动调用“return”,但该方法也有缺陷()


因此,我的问题是:如何在SKScene中一次只允许一次触摸?

SKView继承了UIView,因此,在didMoveToView中添加:

self.view.multipleTouchEnabled = NO;

具有讽刺意味的是,在几天没有发现任何东西之后,我在发布了这个问题之后马上想出了一个解决办法。不过请注意,这是一种黑客行为,并不是最优的,所以我仍在寻找更好的建议。黑客行为如下:

内部触摸开始(),更换:

    for touch: AnyObject in touches {
        // Whatever is being done on touch
    }
与:

触摸的
:触摸中的任何对象{
如果(CACurrentMediaTime()-lastTouchDate<0.1){
返回;
}
lastTouchDate=CACurrentMediaTime();
//无论是在触摸中做什么
}
这样,当多个触摸同时进入或紧接着彼此进入时,只会记录第一次触摸。if(CACurrentMediaTime()-lastTouchDate<0.1)检查自上次触摸被接受以来是否少于0.1秒

    for touch: AnyObject in touches {
        if(CACurrentMediaTime()-lastTouchDate < 0.1) {
            return;
        }
        lastTouchDate = CACurrentMediaTime();
        // Whatever is being done on touch
    }