2010-12-09 134 views
0

我有通知在电影播放:是否可以检查是否完成按钮被按下

[[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(moviePlayBackDidFinish:) 
      name:MPMoviePlayerPlaybackDidFinishNotification 
       object:nil]; 

而且它的处理程序:

- (void) moviePlayBackDidFinish:(NSNotification*)notification 
{  
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

    // Remove observer 
[[NSNotificationCenter defaultCenter] 
    removeObserver:self 
    name:MPMoviePlayerPlaybackDidFinishNotification 
    object:nil]; 

[self dismissModalViewControllerAnimated:YES]; 
} 

在这里,在这个处理方法我想检查DONE按钮是发件人。因为我有两个发件人这个方法。如何检查这个?

回答

3

每文档:MPMoviePlayerPlaybackDidFinishNotification USERINFO字典必须包含的NSNumber为MPMoviePlayerPlaybackDidFinishReasonUserInfoKey键指示原因播放结束。其可能的值:

enum { 
    MPMovieFinishReasonPlaybackEnded, 
    MPMovieFinishReasonPlaybackError, 
    MPMovieFinishReasonUserExited 
}; 
0

用按钮添加标签并根据标签放置条件。

或检查

由IF([发送isEqual:方法BTN1]) {

} 
else 
{ 

} 
1

你首先需要在行动前指定标签的按钮,然后检查发件人的价值标签。

只需添加这些代码行

- (void) moviePlayBackDidFinish:(NSNotification*)notification { 
     NSInteger anyInteger = [sender tag]; 
     //Now check the value of the anyInteger and write the code accordingly. 
    //switch case or if condition whatever you want. 
} 

完蛋了。

阿迪亚

+0

但如果是 '发件人'? – 1110 2010-12-09 13:14:28

0

这是一个古老的线程,但我偶然发现了它,而寻找解决的办法,并接受的解决方案不显示最后的代码。 这里是你必须做的:

- (void) moviePlayBackDidFinish:(NSNotification*)notification 

{
的NSLog(@ “moviePlayBackDidFinish”);

// Remove observer 

[[NSNotificationCenter defaultCenter] removeObserver:自 名:MPMoviePlayerPlaybackDidFinishNotification 对象:无];

NSInteger movieFinishReason= [[[notification userInfo]objectForKey: 
           MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue]; 


if(movieFinishReason == 2 || movieFinishReason == 1 || movieFinishReason == 0){ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 
/* 
MPMovieFinishReasonPlaybackEnded = 0,//played movie sucessfuly. 
MPMovieFinishReasonPlaybackError = 1, //error in playing movie 
MPMovieFinishReasonUserExited = 2; //user quitting the application/user pressed done button 
*/ 

}