开发者

Is it possible to check if done button is pressed

开发者 https://www.devze.com 2023-01-29 22:20 出处:网络
I have notification on movie player: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:)

I have notification on movie player:

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

And it's handler:

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

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

 [self 开发者_Go百科dismissModalViewControllerAnimated:YES]; 
}

Here in this handler method I want to check if the done button is sender. Because I have two senders to this method. How ti check this?


Per docs: MPMoviePlayerPlaybackDidFinishNotification userInfo dictionary must contain NSNUmber for MPMoviePlayerPlaybackDidFinishReasonUserInfoKey key indicating the reason playback has finished. Its possible values:

enum {
   MPMovieFinishReasonPlaybackEnded,
   MPMovieFinishReasonPlaybackError,
   MPMovieFinishReasonUserExited
};


You will first need to assign tag to your buttons before the action and then check the value of the sender tag.

Just add these lines of code:

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

That's it.


This is an old thread but I stumbled upon it while looking for a solution, and the accepted solution doesn't show the final code. Here is what you have to do:

- (void) moviePlayBackDidFinish:(NSNotification*)notification

{
NSLog(@"moviePlayBackDidFinish");

// Remove observer

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

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
 */

}


Add tag with the button and put condition according to the tag.

Or check by

if([sender isEqual:btn1])
{

}
else 
{

}
0

精彩评论

暂无评论...
验证码 换一张
取 消