2015-11-03 55 views
0

我試圖在用戶單擊Apple TV遙控器上的暫停/播放按鈕時創建操作。我查看了文檔,但Apple推薦的文檔代碼不起作用。以下是我的代碼如下。有人能告訴我我做錯了什麼嗎?需要考慮的事項: 我正在使用AVPlayerMovieController &我的代碼中有另一個手勢識別器,但它是一個輕掃手勢,此方法正在調用,而不是暫停/播放。有人可以幫忙嗎?UITapGestureRecognizer&tvOS遙控器用於暫停/播放按鈕

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
    tap.allowedPressTypes = @[[NSNumber numberWithInteger:UIPressTypePlayPause]]; 
    [self.view addGestureRecognizer:tap]; 

謝謝

回答

2

您可以覆蓋pressesEnded方法:

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) { 
    for press in presses { 
     if(press.type == UIPressType.PlayPause) { 
      // Do what you want 
      // ... 
     } else { 
      super.pressesEnded(presses, withEvent: event) 
     } 

    } 
} 
+0

如果您的視圖已經在檢測按下按鈕(例如UICollectionViewCell等),它將起作用(無需添加UITapGestureRecognizer)。所有其他條件相同,最簡單的解決方案應該是選定的答案(這一個)。對於其他人,您可以添加點按手勢識別器,並允許按下UIPressType.PlayPause按鈕。請參閱https://developer.apple.com/library/tvos/documentation/General/Conceptual/AppleTV_PG/DetectingButtonPressesandGestures.html – skim

2

我用以下內容,我識別器獲取的調用。我認爲你需要獲取PlayPause UIPressType的rawValue,而不僅僅是PlayPause UIPressType。

let playPauseRecognizer = UITapGestureRecognizer(target: self, action: "playPauseRecognizer:") 
playPauseRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)] 

view.addGestureRecognizer(playPauseRecognizer) 
+0

您是否嘗試過使用設備?它在模擬器上工作,但不在設備上。 – quaertym

+0

是的,我用設備試了一下,它的工作。 –

3

我有同樣的問題,我發現解決方案,但說實話,我不喜歡它(但至少它是爲我工作)。

鑑於沒有負載我加

let tapRecognizer = UITapGestureRecognizer(target: self, action: "playPauseButtonPressed:") 
    tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)]; 
    self.view.addGestureRecognizer(tapRecognizer) 

UIApplication.sharedApplication().beginReceivingRemoteControlEvents() 

,我有兩種方法實現:

func playPauseButtonPressed(sender: AnyObject) { 
    self.buttonPlayClicked(buttonPlay) 
    print("PRESSED") 
} 

override func remoteControlReceivedWithEvent(event: UIEvent?) { 
    self.buttonPlayClicked(buttonPlay) 
    print("EVENT") 
} 

我敢肯定,我沒有做正確的事情,但我找不到任何地方解決方案。 這只是我的即興作品。

希望這會有所幫助。

+0

它不在仿真器上工作,您是在仿真器上還是在實際設備上測試它? – Nick

+0

我在幾臺設備上測試過它,它工作正常。在模擬器中,當我實現了只有輕擊識別器時它工作得很好,但是當我嘗試它時,它在設備上不起作用。 –

+0

有趣......我測試過,如果在實際的設備上,它確實工作。去重新安裝Xcode,看看它是否有模擬器的問題。謝謝 – Nick

0

我有相同的問題,播放/暫停事件不在視圖控制器中工作。解決方法是在appdelegate的UIWindow中添加播放/暫停UITapGestureRecognizer,並使用通知廣播該事件。