Ich habe eine AVPlayerViewController
und eine beigefügte in der viewDidAppear
Methode einer benutzerdefinierten UIViewController
erstellt. Wenn ich jedoch die Schaltfläche "Fertig" drücke, wird mein benutzerdefinierter Ansichts-Controller automatisch geschlossen.Wie kann ich das Antippen der Schaltfläche "Fertig" in AVPlayerViewController abfangen?
Ich möchte diese Aktion abfangen, um mein eigenes Abwickeln Segue zu verwenden, aber ich bin nicht sicher, wie man das macht. Ich habe Beispiele für MPMoviePlayerViewController
aber nicht AVPlayerViewController
gefunden.
Der Code, den ich für MPMoviePlayerViewController
gefunden unter:
- (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];
}
}
fragte ich von Apple über dieses Problem und sie haben wie folgt geantwortet:
Technischen Support Vielen Dank für Ihre Kontaktaufnahme Apple Developer (DTS). Unsere Ingenieure haben Ihre Anfrage überprüft und sind zu dem Schluss gekommen, dass es keinen unterstützten Weg gibt, um die gewünschte Funktionalität zu erreichen, die derzeit Versandsystemkonfigurationen gegeben.
Wenn der Benutzer die Done-Taste drückt, möchte ich weiterhin auf einem kleinen Bildschirm Video abspielen, also brauche ich ein AVplayer-Objekt, was soll ich tun? –
AVPlayerViewController stoppt die Wiedergabe und gibt den AVPlayer frei, wenn Sie done drücken. Für was Sie brauchen, erstellen Sie Ihren eigenen ViewController mit AVPlayer und wenn der Benutzer done drückt, ändern Sie einfach die Größe der Ansicht. https://developer.apple.com/library/ios/samplecode/AVPlayerDemo/Introduction/Intro.html hat ein Beispiel zum Erstellen eines eigenen AVPlayerViewControllers – dev
Falls ich den AVPlayerViewController nicht ableiten möchte (wie Apple vorschlägt: Do not Unterklasse AVPlayerViewController.Das Überschreiben der Methoden dieser Klasse wird nicht unterstützt und führt zu undefiniertem Verhalten. hier: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerViewController_Class/index.html) gibt es einen Weg um eine Benachrichtigung zu erhalten? –