我的AVPlayerViewController中有一个实时视频,我想禁用播放暂停按钮。我怎么能这样做?
我试过这个,但它不起作用:
UITapGestureRecognizer *playPauseRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:nil];
playPauseRec.allowedPressTypes = @[@(UIPressTypePlayPause)];
[self.avPlayerViewController.view addGestureRecognizer:playPauseRec ];
AVPlayerViewController是View Controller的子视图控制器。
答案 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