Я создал AVPlayerViewController
и прилагается AVPlayer
в способе viewDidAppear
пользовательского UIViewController
. Однако, когда я нажимаю кнопку «Готово», мой пользовательский контроллер просмотра автоматически отбрасывается.Как перехватить нажатие сделанной кнопки в AVPlayerViewController?
Я хотел бы перехватить это действие, чтобы использовать мой собственный сеанс Segue, но я не уверен, как это сделать. Я нашел примеры для MPMoviePlayerViewController
, но не AVPlayerViewController
.
код я нашел для MPMoviePlayerViewController
ниже:
- (void)playVideo:(NSString *)aVideoUrl {
// Initialize the movie player view controller with a video URL string
MPMoviePlayerViewController *playerVC = [[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:aVideoUrl]] autorelease];
// Remove the movie player view controller from the "playback did finish" notification observers
[[NSNotificationCenter defaultCenter] removeObserver:playerVC
name:MPMoviePlayerPlaybackDidFinishNotification
object:playerVC.moviePlayer];
// Register this class as an observer instead
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:playerVC.moviePlayer];
// Set the modal transition style of your choice
playerVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
// Present the movie player view controller
[self presentModalViewController:playerVC animated:YES];
// Start playback
[playerVC.moviePlayer prepareToPlay];
[playerVC.moviePlayer play];
}
- (void)movieFinishedCallback:(NSNotification *)aNotification {
// Obtain the reason why the movie playback finished
NSNumber *finishReason = [[aNotification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
// Dismiss the view controller ONLY when the reason is not "playback ended"
if ([finishReason intValue] != MPMovieFinishReasonPlaybackEnded) {
MPMoviePlayerController *moviePlayer = [aNotification object];
// Remove this class from the observers
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
// Dismiss the view controller
[self dismissModalViewControllerAnimated:YES];
}
}
Я спросил Apple, об этой проблеме, и они ответили следующим образом:
Благодарим Вас за обращение в компании Apple Developer Technical Support (DTS). Наши инженеры рассмотрели ваш запрос и пришли к выводу, что существует нет поддерживаемого способа достижения желаемой функциональности, учитывая в настоящее время.
Когда пользователь нажимает кнопку «Готово», я хочу продолжить воспроизведение видео на маленьком экране, поэтому мне нужен объект avplayer, что мне делать? –
AVPlayerViewController останавливает воспроизведение и отпускание AVPlayer при нажатии. Для чего вам нужно создать свой собственный ViewController с AVPlayer в нем, а когда пользователь нажмет, просто измените размер представления. https://developer.apple.com/library/ios/samplecode/AVPlayerDemo/Introduction/Intro.html имеет пример создания вашего собственного AVPlayerViewController – dev
В случае, если я не хочу подклассифицировать AVPlayerViewController (как предлагает Apple: Do not subclass AVPlayerViewController. Переопределение методов этого класса неподдерживается и приводит к неопределенному поведению. здесь: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerViewController_Class/index.html) есть ли способ получить уведомление? –