Ios 在UIScrollView中停止和启动视频
我已经玩了一天了,碰到了一堵墙 我想要一个Ios 在UIScrollView中停止和启动视频,ios,ipad,uiscrollview,mpmovieplayercontroller,Ios,Ipad,Uiscrollview,Mpmovieplayercontroller,我已经玩了一天了,碰到了一堵墙 我想要一个UIScrollView,它显示用户可以滚动的一系列视频。设置UIScrollView很好,其中的每个项目(我称它们为MenuItems)都是UiViewController的子类,它包含并管理MPMoviePlayerController的所有设置 然而,我发现一个窗口中只能有一个MPMoviePlayerController,可以同时播放 因此,我认为最好的处理方法是在每个菜单项上都有可访问的方法,stopVideo和startVideo,当每个菜单
UIScrollView
,它显示用户可以滚动的一系列视频。设置UIScrollView
很好,其中的每个项目(我称它们为MenuItems)都是UiViewController
的子类,它包含并管理MPMoviePlayerController
的所有设置
然而,我发现一个窗口中只能有一个MPMoviePlayerController
,可以同时播放
因此,我认为最好的处理方法是在每个菜单项上都有可访问的方法,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
,但我遇到了其他错误(例如,如果没有SIGABRT
错误,我似乎无法在MenuItem
中初始化MPMoviePlayerController
)
我认为我的方法有缺陷,或者有一个更简单的方法?感谢所有帮助
非常感谢。回复有点晚,但我也被困在这一点上,并设法推出了一个解决方案,所以我想我会为其他人提供它 我认为这与电影播放器的内存分配有关 我在.h文件中包含了这段代码
@interface VideoInstructionViewController : UIViewController <UIScrollViewDelegate>
{
MPMoviePlayerController *player0;
MPMoviePlayerController *player1;
MPMoviePlayerController *player2;
}
您的代码的其余部分非常有用,我认为这是一个可靠的方法,谢谢!回复有点晚,但我也被困在这一点上,并设法推出了一个解决方案,所以我想我会为其他人提供它 我认为这与电影播放器的内存分配有关 我在.h文件中包含了这段代码
@interface VideoInstructionViewController : UIViewController <UIScrollViewDelegate>
{
MPMoviePlayerController *player0;
MPMoviePlayerController *player1;
MPMoviePlayerController *player2;
}
剩下的代码非常有用,我认为这是一个可靠的方法,谢谢