2016-11-11 80 views
0

我一直沒能得到這個手勢來回應。tvos swift spritekit - UITapGestureRecognizer沒有響應

self.isUserInteractionEnabled = true 
    let tap = UITapGestureRecognizer(target: self, action: #selector(self.movePlayer(_:))) 
    tap.allowedPressTypes = [NSNumber(value: UIPressType.playPause.rawValue)] 
    view?.addGestureRecognizer(tap) 

和功能:按下遙控器模擬器上的播放按鈕時

func movePlayer(_ sender: UITapGestureRecognizer){ 
    player.run(SKAction.moveBy(x: 200, y: 0, duration: 10)) 
    print("Right!") 
} 

什麼都沒有發生。我錯過了什麼?

+0

你攻的時候打的選擇嗎? (我認爲這是選項,它會在模擬器遙控器上說出來) – Knight0fDragon

回答

0

輕拍手勢識別器代碼看起來很好。你在哪裏添加它,是否在didMoveToView?

我最近玩弄新的IOS 10

override func sceneDidLoad() { } 

方法和我注意到,手勢識別器添加有不工作。

這個作品在模擬器

class GameScene: SKScene, SKPhysicsContactDelegate { 

     override func didMove(to view: SKView) { 

      self.isUserInteractionEnabled = true 
      let tap = UITapGestureRecognizer(target: self, action: #selector(self.movePlayer(_:))) 
      tap.allowedPressTypes = [NSNumber(value: UIPressType.playPause.rawValue)] 
      view.addGestureRecognizer(tap) 
    } 

    func movePlayer(_ sender: UITapGestureRecognizer){ 
     print("Right!") 

    } 
} 

希望這有助於

+0

....是的,它在sceneDidLoad()函數中。我嘗試將它移動到didMove,但仍然不起作用。 – Zek

+0

你需要didMove手勢,我記得與sceneDidLoad測試,它不工作。我剛剛測試了一個新項目,它工作正常。你能用你場景的整個代碼更新你的問題嗎? – crashoverride777

+0

那麼,我試圖在一個新的項目中測試它,現在它正在工作。將我的代碼移至didMove確實有效。我還將精靈位置移動到了didMove,它修復了我在創建了移動的精靈副本的另一個錯誤。那麼,sceneDidLoad是可怕的或者是什麼? – Zek