使用和不使用 UIGestureRecognizer 调用函数

Call function with and without UIGestureRecognizer

作为努力学习的一部分,我正在创建一个简单的游戏 Swift。在一轮结束时,我使用了 UIGestureRecognizer 来清除 modal/hudview,在清除时,它也清除了游戏板。我也想在 restart() 函数中调用 clearBoard(recognizer: UITapGestureRecognizer) 函数,但由于 clearBoard().[=18 的 UITapGestureRecognizer 参数的必要性,所以不能=]

如何在手势识别器和 restart 函数中使用 clearBoard 函数?简化代码如下:

class GameViewController: UIViewController {

  // Setup views etc.  

  func endGame() {
    let tapRec = UITapGestureRecognizer()

    if winner == 1 {
        self.playerScore++
        self.playerScoreLabel.text = String(self.playerScore)
        let hudView: HudView = HudView.hudInView(self.view, message: "Player won!", animated: true)

        tapRec.addTarget(self.view, action: "clearBoard")
        self.view.addGestureRecognizer(tapRec)



    } else {
        self.computerScore++
        self.computerScoreLabel.text = String(self.computerScore)
        let hudView: HudView = HudView.hudInView(self.view, message: "Computer won!", animated: true)

    }
}

  func restart() {
    // Restart

    // Problem here
    self.clearBoard()
  }

  func clearBoard(recognizer: UITapGestureRecognizer) {
    // Clear board
  }



}

您不必将识别器设置为参数。这只是苹果为您提供的一种可能性。您也可以不传递任何参数:

func clearBoard(){
  //Clear board
}

它也适用于手势识别器。您无需更改手势代码中的任何内容:

tapRec.addTarget(self.view, action: "clearBoard")

完全没问题。