如何禁用tvOS上AVPlayerViewController中的播放暂停按钮?

时间:2016-08-17 16:38:13

标签: objective-c tvos avplayerviewcontroller

我的AVPlayerViewController中有一个实时视频,我想禁用播放暂停按钮。我怎么能这样做?

我试过这个,但它不起作用:

UITapGestureRecognizer *playPauseRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:nil];  
playPauseRec.allowedPressTypes = @[@(UIPressTypePlayPause)];
[self.avPlayerViewController.view addGestureRecognizer:playPauseRec ];

AVPlayerViewController是View Controller的子视图控制器。

3 个答案:

答案 0 :(得分:1)

在该按钮的操作上调用不同的方法。我通过在手势行动上不做任何调用来做到这一点。这是我的代码

UITapGestureRecognizer *tapGestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(PlayPause)];
tapGestureRec.allowedPressTypes = @[@(UIPressTypePlayPause)];
[self.view addGestureRecognizer:tapGestureRec];   

并在playPause函数中

-(void)PlayPause
  {
 NSLog(@"Do Anything or Nothing");
 }

答案 1 :(得分:1)

如果您愿意使用私有API并想要更多控制权,则可以在AVPlayerViewController上设置私有委托。委托提供了一些特殊的回调,这些回调使您可以完全禁用暂停。

@objc protocol YourPrivateAVPlayerViewControllerDelegate {
  @objc optional func playerViewController(_ controller: AVPlayerViewController, shouldPlayFromTime: TimeInterval, completion: @escaping (Bool) -> Void)
  @objc optional func playerViewController(_ controller: AVPlayerViewController, shouldPauseWithCompletion: @escaping (Bool) -> Void)
}

您可以实现第二个委托方法,并调用shouldPauseWithCompletion(false)以禁用暂停。如果要根据流的类型或其他一些属性来禁用暂停,当然也可以这样做。

使用以下命令在AVPlayerViewController上设置委托实现:

playerController.perform(Selector(("setPrivateDelegate:")), with: self)

答案 2 :(得分:0)

如果您想禁用所有事件(播放/暂停/搜索),可以通过将isUserInteractionEnabled的{​​{1}}标志设置为AVPlayerViewController来实现。

false