首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未调用tvOS中的pressesEnded

未调用tvOS中的pressesEnded
EN

Stack Overflow用户
提问于 2016-02-23 20:57:24
回答 3查看 1.7K关注 0票数 3

我正在用swift spritekit为tvOS开发一个游戏。有一个显示SKScene B的viewcontroller A。我正在将pressesBegan和pressesEnded从A转发到B。

在A中调用pressesBegan并将其转发到B,但在A中甚至没有调用pressedEnded。我不明白为什么?

下面是在A中实现的函数。

代码语言:javascript
运行
复制
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)
    }

}

代码语言:javascript
运行
复制
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)
    }
}
EN

回答 3

Stack Overflow用户

发布于 2016-03-01 23:10:49

我自己也遇到了这个。

我相信如果你重写这个方法:

- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event

并且不要在方法中的某个地方调用super:

[super pressesBegan:presses withEvent:event];

pressedEnded也从未被调用过。

我遇到过这样一种情况,有时调用pressesEnded,有时不调用,这是我能发现的唯一区别。

票数 0
EN

Stack Overflow用户

发布于 2016-12-22 01:41:27

它看起来像是pressesEnded没有被及时调用的某种bug。我注意到在pressesEndedpressesBegan上设置了断点。它总是在pressesBegan上停止,但只在等待一秒钟后才在pressesEnded上停止。

我能找到的唯一解决方法是在viewDidLoad中添加以下代码

代码语言:javascript
运行
复制
let menuPressRecognizer = UITapGestureRecognizer()
menuPressRecognizer.addTarget(self, action: #selector(ShowListViewController.menuButtonAction))
menuPressRecognizer.allowedPressTypes = [NSNumber(value: UIPressType.menu.rawValue)]
self.view.addGestureRecognizer(menuPressRecognizer)

然后是这个:

代码语言:javascript
运行
复制
func menuButtonAction() {
    print("menu pressed")
    UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
}

顺便说一句,这是斯威夫特3。

票数 0
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35578243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档