【发布时间】:2011-09-26 22:11:59
【问题描述】:
我正在使用 iOS SDK 4.3 进行开发。 我有一个水平滚动的分页画廊,可以显示来自远程提要的图像或视频。对于分页视图,我使用的是公开可用的 ATPagingView:页面的重用与 TableViewCells 类似。但是对于我使用单个 MPMoviePlayerController 的视频,我将其 .view 属性分配给多个页面作为子视图(我知道,我知道...):
moviePlayerController = [[MPMoviePlayerController alloc] init];
moviePlayerController.repeatMode = MPMovieRepeatModeNone;
moviePlayerController.controlStyle = MPMovieControlStyleEmbedded;
moviePlayerController.shouldAutoplay = false;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieLoadStateChangeAction:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
您可以看到我已经注册了 MoviePlayer 事件 LoadState 通知。 当新页面出现在屏幕上时,如果需要,我会开始加载视频:
- (void)currentPageDidChangeInPagingView:(ATPagingView *)pagingView
{
if (pagingView.currentPageIndex < 0)
return;
NSLog(@"currentPageDidChangeInPagingView");
GalleryPageView *currentPage = (GalleryPageView *)[pagingView viewForPageAtIndex:pagingView.currentPageIndex];
if (![currentPage.gestureRecognizers count]) {
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resetZoom)];
recognizer.numberOfTapsRequired = 2;
[currentPage.zoomView addGestureRecognizer:recognizer];
recognizer.delegate = self;
[recognizer release];
}
moviePlayButton.hidden = YES;
[activityView stopAnimating];
FeedItem *feedItem = (FeedItem *)[dataRoot objectAtIndex:pagingView.currentPageIndex];
if (feedItem.contentType == FeedContentTypeMovie) {
moviePlayerController.contentURL = [NSURL URLWithString:feedItem.movieUrl];
[moviePlayerController prepareToPlay];
[activityView startAnimating];
}
现在,如果 第一个 页面包含视频,即使在我调用 moviePlayerController.prepareToPlay 之后,它也不会加载:没有触发 loadState 事件。后续页面将按预期工作。 我尝试在 MPlayerController 初始化时预加载固定视频,但在这种情况下,固定视频已正确加载(MPMovieLoadState == 3),而第一页上的视频会导致 MPMovieLoadStateUnknown 发生变化。
电影网址正确。 当我从第 2 页滚动回第 1 页时,加载了第一个视频 (MPMovieLoadState == 3),但没有显示。
您建议调查什么?共享视图架构有那么可怕吗?毕竟,它适用于以下页面。 prepareToPlay 是否有任何已知的奇怪行为?例如,如果视图被任何人“虐待”,MPC 是否可能会生气,然后拒绝加载内容?你还会如何解释 MPMovieLoadStateUnknown?我很确定没有其他 MPC 鬼实例在乱七八糟(我已经读过它可能是个问题)。
谢谢你,很抱歉发了这么长的帖子。
【问题讨论】:
标签: objective-c ios video