![](/img/trans.png)
[英]cellForRowAt not being called But numberOfSection and numberOfRowsInSection is being called
[英]pressesEnded in tvOS not being called
我正在swift spritekit中为tvOS开发游戏。 有一个显示SKScene B的视图控制器A。我将pressesBegan和pressesEnded从A转发到B。
在A中调用了pressesBegan并将其转发给B,但在A中甚至没有调用pressEndEnded。我不明白为什么吗?
以下是在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)
}
}
自己碰到这个。
我相信这是如果您重写该方法:
- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event
并且不要在方法的某处调用super:
[super pressesBegan:presses withEvent:event];
PressedEnded也永远不会被调用。
我遇到的情况是有时调用了presssEnded,有时却没有,这是我能发现的唯一区别。
看起来有些bug不能及时调用pressesEnded
。 我注意到在pressesEnded
和pressesBegan
上设置了一个断点。 它始终在pressesBegan
上pressesBegan
,但仅在pressesEnded
停止,等待一秒钟继续。
我能找到的唯一解决方法是在viewDidLoad
中添加它:
let menuPressRecognizer = UITapGestureRecognizer()
menuPressRecognizer.addTarget(self, action: #selector(ShowListViewController.menuButtonAction))
menuPressRecognizer.allowedPressTypes = [NSNumber(value: UIPressType.menu.rawValue)]
self.view.addGestureRecognizer(menuPressRecognizer)
然后这个:
func menuButtonAction() {
print("menu pressed")
UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
}
顺便说一下,这是3。
我也遇到过这种情况。
经过一些测试之后,似乎在释放“选择”按钮时,tvOS调用pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)
或 pressesCancelled(_ presses: Set<UIPress>, with event: UIPressesEvent?)
。
至于为什么,我不知道。 每按一次按钮,我所做的任何操作都没有什么不同。 可能是tvOS中的错误。
通过跳转到pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)
并找到此注释pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)
我找到了该解决方案:
对于每个正在处理的印刷机,您的响应者将收到pressesEnded:withEvent或pressesCancelled:withEvent :(在pressesBegan:withEvent:中收到的印刷机)。
这里是一个链接到我问同一个问题的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.