我正在用swift spritekit为tvOS开发一个游戏。有一个显示SKScene B的viewcontroller A。我正在将pressesBegan和pressesEnded从A转发到B。
在A中调用pressesBegan并将其转发到B,但在A中甚至没有调用pressedEnded。我不明白为什么?
下面是在A中实现的函数。
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
if ((self.view as! SKView).scene?.isMemberOfClass(GameScene) == true){
let gameScene = (self.view as! SKView).scene as! GameScene
gameScene.pressesEnded(presses, withEvent: event)
}
}
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
if ((self.view as! SKView).scene?.isMemberOfClass(GameScene) == true){
let gameScene = (self.view as! SKView).scene as! GameScene
gameScene.pressesBegan(presses, withEvent: event)
}
}
发布于 2017-11-15 22:50:53
我也遇到过这种情况。
经过一些测试,似乎当“选择”按钮被释放时,tvOS会调用pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)
或 pressesCancelled(_ presses: Set<UIPress>, with event: UIPressesEvent?)
。
至于为什么会这样,我不知道。在每次按下按钮时,我没有做任何不同的事情。可能是tvOS中的一个bug。
我跳转到pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)
的定义,找到了这个解决方案,并找到了这个评论:
您的响应者将收到按下each :withEvent或按下取消:withEvent:按下的每个按键(按下press :withEvent:)。
这是我就同一问题提出的问题的link。
https://stackoverflow.com/questions/35578243
复制相似问题