2016-07-30 59 views
3
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(MainController.tapped(_:))) 
tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)] 
self.view.addGestureRecognizer(tapRecognizer) 

此代碼允許我覆蓋播放/暫停按鈕並且它可以正常工作。但是,現在我必須長按菜單按鈕才能返回Apple TV OS菜單。當播放/暫停按鈕被覆蓋時允許Siri遠程菜單按鈕

是否有按下菜單按鈕時,它直接返回到操作系統菜單,而播放/暫停按鈕保持我目前的邏輯?如果點擊菜單沒有返回到操作系統菜單,恐怕我的應用程序可能會被拒絕。

+0

如果菜單按鈕沒有返回到Apple TV主屏幕,則您的應用程序將被拒絕: [當遙控器上的菜單按鈕被按下時,Apple TV App不會從初始視圖控制器退出到主屏幕](http://stackoverflow.com/q/33302109/2108547)。 –

回答

3

要返回到Apple TV的主屏幕你可以設置在UITapGestureRecognizerviewDidLoad像這樣:

// 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

+1

謝謝!你救了我的一天! – zsong