tvOS UIPress手势无法在SKScene的子类中识别

Bry*_*yer 5 swift tvos

我正在尝试回应SKScene子类中的新闻.我可以在我的ViewController中覆盖响应者pressEnded就好了,但是当我将pressEnded覆盖移动到我的SKScene子类中时,我不再接收任何调用.

下面是我的pressEnabled覆盖,它在ViewController中按预期工作

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
    print("press")
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何在SKScene内接受按钮按下?

use*_*651 8

您需要将您的新闻事件从ViewController转发到SKScene,就像这样......

override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {   
  gameScene.pressesBegan(presses, withEvent: event)
}

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
  gameScene.pressesEnded(presses, withEvent: event)
}
Run Code Online (Sandbox Code Playgroud)

然后在gameScene(SKScene)做类似的事情:

override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
  for press in presses {
    switch press.type {
    case .UpArrow:
      print("Up Arrow")
    case .DownArrow:
      print("Down arrow")
    case .LeftArrow:
      print("Left arrow")
    case .RightArrow:
      print("Right arrow")
    case .Select:
      print("Select")
    case .Menu:
      print("Menu")
    case .PlayPause:
      print("Play/Pause")
    }
  }
}

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
  print("Presses Ended.")
}
Run Code Online (Sandbox Code Playgroud)

当用户轻敲触摸板的边缘时,会发送"箭头"按钮,但在模拟器中无法识别.轻触触控板中心时会发送"选择".

我希望这有帮助!