我正在使用 AVPlayer 的 -addBoundaryTimeOserverForTimes:queue:usingBlock: 在视频中的特定时间执行一些代码(在这种情况下,我想要在视频达到其持续时间时取消隐藏按钮。代码如下:
- (void)viewWillAppear:(BOOL)animated
{
...
_player = [AVPlayer playerWithURL:videoURL];
AVPlayerLayer *newPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:_player];
[newPlayerLayer setFrame:_videoView.bounds];
[_videoView.layer addSublayer:newPlayerLayer];
_observer = [_player addBoundaryTimeObserverForTimes:@[[NSValue valueWithCMTime:_player.currentItem.duration]] queue:NULL usingBlock:^{
[someButton setHidden:NO];
}];
...
}
无论出于何种原因,有时代码块会触发并且按钮变得可见,有时则不会。无法在此行为中找到模式。它经常(几乎总是)在模拟器中发生,偶尔在设备上发生。有没有人遇到过这个问题?任何想法可能会发生什么?
编辑
此外,如果我在块上设置断点,它总是会触发。