覆盖播放/暂停按钮时允许使用 Siri 远程菜单按钮

Posted

技术标签:

【中文标题】覆盖播放/暂停按钮时允许使用 Siri 远程菜单按钮【英文标题】:Allow Siri Remote Menu button when Play/Pause button is overridden 【发布时间】:2016-07-30 02:38:53 【问题描述】:
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(MainController.tapped(_:)))
tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)]
self.view.addGestureRecognizer(tapRecognizer)

此代码允许我覆盖播放/暂停按钮并且它可以正常工作。但是,现在我必须长按菜单按钮才能返回 Apple TV OS 菜单。

当按下“菜单”按钮时,是否会直接返回操作系统菜单,而“播放/暂停”按钮会继续执行我当前的逻辑?恐怕如果单击菜单不返回操作系统菜单,我的应用程序可能会被拒绝。

【问题讨论】:

如果菜单按钮未返回 Apple TV 主屏幕,您的申请将被拒绝:Apple TV App not exiting to the home screen from initial view controller when menu button pressed on remote。 【参考方案1】:

要返回 Apple TV 主屏幕,您可以在 viewDidLoad 中设置 UITapGestureRecognizer,如下所示:

// Setup Menu Button recognizer
let menuGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.handleMenuGesture(_:)))
menuGesture.allowedPressTypes = [NSNumber(integer: UIPressType.Menu.rawValue)]
self.view.addGestureRecognizer(menuGesture)

然后在handleMenuGesturesuspend 你的应用程序中:

// MARK: - Handle Siri Remote Menu Button
func handleMenuGesture(tap: UITapGestureRecognizer) 
    print("Menu Gesture")
    UIControl().sendAction(#selector(NSURLSessionTask.suspend), to: UIApplication.sharedApplication(), forEvent: nil)

相关:Siri Remote's Menu Button not exiting application when UIButton is focused

【讨论】:

谢谢!你拯救了我的一天!

以上是关于覆盖播放/暂停按钮时允许使用 Siri 远程菜单按钮的主要内容,如果未能解决你的问题,请参考以下文章

覆盖 Siri 远程菜单按钮

无法拦截 Siri Remote 上的“暂停”按钮 - 始终停止背景音乐并且从不继续播放

检测 Siri Remote 上的音量和 Home 键按下情况

当 UIButton 获得焦点时,Siri Remote 的菜单按钮不退出应用程序

更新 MPRemoteCommandCenter 播放/暂停按钮

播放器控制器在 tvOS 中按下菜单按钮时关闭