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;    
}
剩下的代码非常有用,我认为这是一个可靠的方法,谢谢