У меня есть место, где я разрешаю пользователям выбирать видео с UIImagePicker, которое затем воспроизводится через MPMoviePlayerViewController. Это прекрасно работает, за исключением случаев, когда нажата кнопка «Готово», это просто приостанавливает видео и не отменяет его из полноэкранного режима. Я был убежден, что поведение по умолчанию кнопки «Готово» - это отклонение видео, поэтому я не совсем уверен, что мешает ему это сделать, или что я могу изменить, чтобы это произошло. Вот мой текущий код, я пробовал несколько изменений, которые я запомню после кода.MPMoviePlayerViewController done button not working
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if(CFStringCompare((CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo)
{
videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
}
moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[moviePlayer.view setTranslatesAutoresizingMaskIntoConstraints:YES];
moviePlayer.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
[self.view addSubview:moviePlayer.view];
- (void) moviePlayBackDidFinish:(NSNotification*)notification
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerDidExitFullscreenNotification
object:nil];
[moviePlayer.moviePlayer stop];
[moviePlayer.view removeFromSuperview];
}
Я попытался изменить [self.view addSubview:moviePlayer.view];
к [self presentMoviePlayerViewControllerAnimated:];
, но это просто не делать ничего. Я добавил пару различных вариантов:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerDidExitFullscreenNotification
object:moviePlayer];
с остальной частью кода инициализации, но это тоже не помогло.
Редактировать: Если видео разрешено продолжать играть до конца, оно также не отменяется, оно просто застряло с видеопроигрывателем в полноэкранном режиме.