如何将 KVO 添加到 MPMoviePlayer currentPlaybackTime?
Posted
技术标签:
【中文标题】如何将 KVO 添加到 MPMoviePlayer currentPlaybackTime?【英文标题】:How to add a KVO to MPMoviePlayer currentPlaybackTime? 【发布时间】:2011-04-26 13:44:30 【问题描述】:如何将 KVO 添加到 MPMoviePlayer 类的 currentPlaybackTime 属性?
【问题讨论】:
通用方式工作得很好,但如果你想捕获播放器控件(例如搜索滑块)对播放时间的操作,它不会帮助你 - 那些不使用 currentPlaybackTime 属性二传手实现寻找。 @Till 我不相信你能做到这一点,因为 currentPlaybackTime 没有被标记为 KVO 兼容,而且我自己尝试观察它并没有导致更改通知触发。请参阅下面的替代建议。 @Carlos 对,从结果来看,就是我说的;它不会工作。我仍然不清楚将 currentPlaybackTime 描述为不符合 KVO 标准。感谢您指出这一点。 【参考方案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:”?以上是关于如何将 KVO 添加到 MPMoviePlayer currentPlaybackTime?的主要内容,如果未能解决你的问题,请参考以下文章