swift - tvOS - pressesEnded 在启动时不起作用

标签 swift tvos apple-tv

我试图为应用程序提供与 YouTuBe 相同的行为,其中当顶部 TabBar 可见且用户按下 Remote 上的菜单按钮时,应用程序应退出。

所以我重写了 pressesBeganpressesEnded

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

}

是的,里面什么都没有,否则无论条件是什么,应用程序都会退出 pressesEnded

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
    if let type = presses.first?.type where type == .Menu {
        if navigationController.viewControllers.count == 1 {
            if isTabBarOpen {
                super.pressesEnded(presses, withEvent: event)
            } else {
                self.showTabBar()
                self.setNeedsFocusUpdate()
                self.updateFocusIfNeeded()
            }
        }
    } else {
        super.pressesEnded(presses, withEvent: event)
    }
}

所以我的问题是应用程序启动(从终止状态,而不是后台状态),如果我按下 Remote 上的菜单按钮,if isTabBarOpen{ super.pressesEnded(presses, withEvent: event) } 被执行,但应用程序永远不会退出,除非我移动焦点。

编辑

我尝试将初始焦点集中在 TabBarRootViewController

如果您需要更多信息,请告诉我:) 谢谢

最佳答案

您是否尝试过使用手势识别器来捕捉菜单按钮按下的情况?

    // add the hook to detect menu button press
    let tap = UITapGestureRecognizer(target: self, action: "menuPressed:")
    tap.allowedPressTypes = [NSNumber(integer: UIPressType.Menu.rawValue)]
    window.rootViewController?.view.addGestureRecognizer(tap) // add it to your view controller

    func menuPressed(gesture: UITapGestureRecognizer){
       print("menu press")   
    }

关于swift - tvOS - pressesEnded 在启动时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463221/

相关文章:

Swift - 与 Accelerate Framework 的卷积

swift - 如何最小化 imageView TVOS Focus CollectionView Swift 的阴影

swiftui - 如何在 tvOS 上使用 SwiftUI 在多个水平列表之间导航

Swift Package Manager 无法解析 1.4 以上的 Kitura 版本

ios - 当应用程序在后台时广告数据发生更改时如何收到通知?

ios - 页面 View Controller 未按照其编码的样式进行转换

swiftui - 如何在 SwiftUI 中使 UIViewRepresentable 可聚焦在 tvOS 上?

ios-simulator - TVMLKitErrorDomain 错误 3 消息

swift - 如何在 swift 中连接到外部游戏 Controller - apple tv