Ios 轻触精灵时发生的其他动作;如何预防

Ios 轻触精灵时发生的其他动作;如何预防,ios,swift,button,sprite-kit,Ios,Swift,Button,Sprite Kit,我正在构建一个主要通过点击屏幕(任何地方)来玩的游戏。我现在添加了一个设置按钮,当点击时,会打开一个设置窗口 问题是,当点击设置按钮时,游戏中也会发生交互。有没有办法防止这种情况发生 “我的设置”屏幕通过布尔表达式与设置功能和覆盖功能配合使用 游戏通过添加到didMoveToView视图中的UITapGestureRecognitor进行 /* Game Interaction & Playability */ override func didMoveToView(view: SKVi

我正在构建一个主要通过点击屏幕(任何地方)来玩的游戏。我现在添加了一个设置按钮,当点击时,会打开一个设置窗口

问题是,当点击设置按钮时,游戏中也会发生交互。有没有办法防止这种情况发生

“我的设置”屏幕通过布尔表达式与设置功能和覆盖功能配合使用

游戏通过添加到didMoveToView视图中的UITapGestureRecognitor进行

/* Game Interaction & Playability */
override func didMoveToView(view: SKView) {
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("tapped:"))
    view.addGestureRecognizer(tap)
}

/* Settings Button Interaction */
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    for touch in touches {
        let positionInScene = touch.locationInNode(self)
        let touchedNode = self.nodeAtPoint(positionInScene)

        if let name = touchedNode.name {
            if name == "Settings" {
                if settingsOpen == false {
                    settings()
                } else {
                    settings()
                }
            }
        }
    }
}
/*游戏交互和可玩性*/
覆盖func didMoveToView(视图:SKView){
让点击:UITapGestureRecognizer=UITapGestureRecognizer(目标:自我,操作:选择器(“点击:”)
view.AddGestureRecognitor(点击)
}
/*设置按钮交互*/
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
接触{
let positionInScene=触摸位置InNode(自身)
让touchedNode=self.nodeAtPoint(positionInScene)
如果let name=touchedNode.name{
如果名称==“设置”{
如果设置sopen==false{
设置()
}否则{
设置()
}
}
}
}
}

好吧,这里有几个手势识别器。实际上,您不需要向视图中添加识别器,就可以知道是否有人在点击它。这已经为您处理过了(因此,
touchsbegind
在不添加其他识别器的情况下工作的原因)


我想说的是,移除额外的识别器,并将
点击的代码移动到您的
触摸开始

,我唯一能想到的是创建一个较小的视图,将其放置在屏幕顶部的主视图上方,并将SKSpriteNode按钮连接到它。我可以想象,既然按钮会是另一个视图的一部分,我就不会得到相互冲突的点击。但是在我完成这个改变之前,如果有人有一个更简单的解决方案,我会很感激的。它工作得很完美,在触摸屏上玩了一点,开始了,但成功了。谢谢