当dismissMoviePlayerView动画正在进行时,不能显示MoviePlayerView动画



我有一个应用程序,按顺序呈现图像和/或电影。问题是,我不能关闭一个电影播放器,然后呈现另一个。如果我尝试,我得到的信息是"警告:试图在MyViewController上呈现MPMoviePlayerViewController,而演示正在进行中!"与其他动画呈现/解散方法不同,没有完成处理程序,也没有非动画版本的呈现/解散。

下面是我的代码的简化版本:

-(void) play
{
    [[window rootViewController] presentMoviePlayerViewControllerAnimated:player];
    [[_player moviePlayer] play];
}
-(void) videoNotification:(NSNotification *) notification
{
    if([notification.name isEqualToString:MPMoviePlayerPlaybackDidFinishNotification])
    {
        [[window rootViewController] dismissMoviePlayerViewControllerAnimated];
        [_canvasManager showNextCanvas]; //this calls play on the next canvas
    }
}

关于如何实现我的目标有什么想法/提示吗?

在查看了下课viewcontrolleranimated:completion:之后,我能够通过创建MPMoviePlayerViewController的子类和重写(void)viewDidDisappear来创建一个完成处理程序。viewDidDisappear在dismissMoviePlayerViewControllerAnimated结束时被调用。

@interface MyMoviePlayerViewController : MPMoviePlayerViewController
{
    void (^_viewDidDisappearCallback)(void);
}
- (void)setViewDidDisappearCallback:(void (^)(void))callback;
@end    
@implementation MyMoviePlayerViewController
- (id) initWithContentURL:videoPath
{
    self = [super initWithContentURL:videoPath];
    _viewDidDisappearCallback = nil;    
    return self;
}
- (void)setViewDidDisappearCallback:(void (^)(void))callback
{
    _viewDidDisappearCallback = [callback copy];
}
- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];    
    if(_viewDidDisappearCallback != nil)
        _viewDidDisappearCallback();
}
@end

最新更新