MPMoviePlayer сделал кнопку выдачи - PullRequest
9 голосов
/ 26 мая 2011

Я использую MPMoviePlayer для отображения видео. Я вхожу в полноэкранный режим, и когда нажата кнопка «Готово», я хочу, чтобы она полностью удалила видеоплеер из поля зрения. В настоящее время он выходит только из полноэкранного режима. Как вы отслеживаете нажатие кнопки doneButton или как мне решить эту проблему?

Ответы [ 2 ]

25 голосов
/ 26 мая 2011

Вы можете сделать это, добавив обработчик уведомлений на MPMoviePlayerDidExitFullscreenNotification, поскольку это уведомление отправляется, когда пользователь нажимает кнопку Готово.

Где-то в инициализаторе

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];

Сейчасреализовать этот обработчик:

- (void)MPMoviePlayerDidExitFullscreen:(NSNotification *)notification
{
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerDidExitFullscreenNotification 
                                                  object:nil];

    [moviePlayerController stop];
    [moviePlayerController.view removeFromSuperview];
}
6 голосов
/ 26 мая 2011

Насколько мне известно, вы не можете получать уведомления при нажатии кнопки Готово. Однако вы можете получить уведомление, когда проигрыватель фильма выходит из полноэкранного режима после нажатия кнопки «Готово». Для этого вы используете MPMoviePlayerDidExitFullscreenNotification

Чтобы наблюдать и действовать в соответствии с этим уведомлением, вам нужно вставить следующий код в ваш файл класса, содержащий IBAction (поместите его в метод viewDidLoad):

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullScreen) name:@"MPMoviePlayerDidExitFullscreenNotification" object:nil];

Теперь вам нужно создать метод exitedFullScreen в том же классе:

-(void) exitedFullScreen
{
     //Do whatever you want here
}

Наконец, в вашем методе viewDidUnload вставьте следующую строку:

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"MPMoviePlayerDidExitFullscreenNotification" object:nil];

Чтобы объяснить, что происходит:

Строка кода «addObserver» в вашем viewDidLoad гарантирует, что ваш viewController, ответственный за обработку moviePlayer, прослушивает уведомление MPMoviePlayerDidExitFullScreen.

В этой строке указывается, что при получении уведомления метод exitedFullScreen запускается, куда вы помещаете код, который хотите запустить при нажатии кнопки «Готово».

В viewDidUnload viewController будет выгружен, поэтому вы хотите прекратить прослушивание уведомления, отсюда и часть removeObserver.

...