2014-07-02 43 views
0

我有一个按顺序呈现图像和/或电影的应用程序。问题是,我不能解雇一个电影播放器​​,然后提出另一个电影播放器​​。如果我尝试,我会收到消息“警告:尝试在演示文稿正在处理时在MyViewController上呈现MPMoviePlayerViewController!”与其他动画呈现/解散方法不同,没有完成处理程序,也不存在呈现/解除的非动画版本。当dismissMoviePlayerView动画正在进行时,无法呈现MoviePlayerView动画

这里是我的代码的简化版本:

-(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 
    } 
} 

任何想法/如何实现我的目标提示吗?

回答

0

看过dismissViewControllerAnimated: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 
相关问题