【问题标题】:How to add a KVO to MPMoviePlayer currentPlaybackTime?如何将 KVO 添加到 MPMoviePlayer currentPlaybackTime?
【发布时间】:2011-04-26 13:44:30
【问题描述】:

如何将 KVO 添加到 MPMoviePlayer 类的 currentPlaybackTime 属性?

【问题讨论】:

  • 通用方式工作得很好,但如果你想捕获播放器控件(例如搜索滑块)对播放时间的操作,它不会帮助你 - 那些不使用 currentPlaybackTime 属性二传手实现寻找。
  • @Till 我不相信你能做到这一点,因为 currentPlaybackTime 没有被标记为 KVO 兼容,而且我自己尝试观察它并没有导致更改通知触发。请参阅下面的替代建议。
  • @Carlos 对,从结果来看,就是我说的;它不会工作。我仍然不清楚将 currentPlaybackTime 描述为不符合 KVO 标准。感谢您指出这一点。

标签: iphone mpmovieplayercontroller observer-pattern key-value-observing


【解决方案1】:

您不能将 KVO 添加到 currentPlaybackTime,因为该属性未明确声明为与 KVO 兼容。

相反,您可以尝试定期轮询玩家并存储位置,代码如下:

- (void) BeginPlayerPolling {
self.pollPlayerTimer = [NSTimer scheduledTimerWithTimeInterval:5
                                                       target:self 
                                                     selector:@selector(PollPlayerTimer_tick:)
                                                     userInfo:nil 
                                                      repeats:YES];  

}

- (void) PollPlayerTimer_tick:(NSObject *)sender {
// Store current playback position
if (player.playbackState == MPMoviePlaybackStatePlaying)
    lastRecordedPlaybackTime = player.currentPlaybackTime;
}

- (void) EndPlayerPolling {
if (pollPlayerTimer != nil)
{
    [pollPlayerTimer invalidate];
    self.pollPlayerTimer = nil;
}
}

【讨论】:

  • 这也是我最终得到的解决方案:)
  • @Milk78 是的,这似乎是目前跟踪位置的唯一方法。感谢您接受答案。
  • @BenScheirman 我知道,我对此感到有些羞愧 - 但似乎这是目前唯一的解决方案
  • 为什么我们没有像 AVPlayer 那样的“addPeriodicTimeObserverForInterval:”?
猜你喜欢
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多