【发布时间】:2011-11-30 22:36:51
【问题描述】:
我已经玩了一天了,结果碰壁了。
我想要一个UIScrollView,它显示用户可以滚动浏览的一系列视频。设置UIScrollView 很好,其中的每个项目(我称它们为MenuItems)都是UiViewController 的子类,包含并管理MPMoviePlayerController 等的所有设置。
但是我发现你只能在一个窗口中同时播放一个MPMoviePlayerController。
所以,我认为处理此问题的最佳方法是在每个 MenuItem、stopVideo 和 startVideo 上设置可访问的方法,当每个菜单项成为 UiScrollView 的“焦点”时我会触发这些方法(我有成功地对委托进行了编码,以便它捕获滚动事件并确定哪个页面位于滚动视图的中心)。
问题是,我不知道如何访问 UiScrollView 中的 MenuItem 对象。
我在 UIScrollView 委托中有以下代码来执行此操作:
- (void)scrollViewDidScroll:(UIScrollView *)sView {
//establish what page we're on
static NSInteger previousPage = 0;
MenuItem *currentMenuItem;
MenuItem *previousMenuItem;
CGFloat pageWidth = sView.frame.size.width;
float fractionalPage = sView.contentOffset.x / pageWidth;
NSInteger page = lround(fractionalPage);
if (previousPage != page) {
//firstly, get the previous page and stop the video
previousMenuItem = [sView.subviews objectAtIndex:previousPage];
previousMenuItem = [previousMenuItem nextResponder];
[previousMenuItem hideVideo];
//[previousMenuItem release];
//page has changed, get the new current page and start the video
currentMenuItem = [sView.subviews objectAtIndex:page];
currentMenuItem = [currentMenuItem nextResponder];
[currentMenuItem showVideo];
//[currentMenuItem release];
previousPage = page;
}
}
方法showVideo 和hideVideo 被调用,但我得到了其他错误(例如,我似乎无法在MenuItem 中初始化MPMoviePlayerController 而不出现SIGABRT 错误)。
我认为我的方法在这里有缺陷,还是有更简单的方法?感谢所有帮助!
非常感谢。
【问题讨论】:
标签: ios ipad uiscrollview mpmovieplayercontroller