Gibt es eine Möglichkeit, die Vollbild-Taste des MPMoviePlayerController zu deaktivieren?iPad MPMoviePlayerController - Vollbild deaktivieren
Antwort
Nein, es gibt keinen Weg. Hoffentlich mit dem nächsten Update.
Sie könnten die Steuerelemente für die Wiedergabe ausblenden und Ihre eigenen diejenigen hinzufügen, wird dies die Standard-Tasten verhindern bei allen
Ie gerendert wird auf Ihre Bedürfnisse mit
[player setMovieControlMode:MPMovieControlModeNone];
Je, können Sie auch einfach deaktivieren Alle Benutzerinteraktionen in der Playeransicht.
player.view.userInteractionEnabled = NO;
Wired tut dies. Für die Videos, die im Vollbildmodus gestartet werden, verfügen sie über die standardmäßigen MPMoviePlayerController-Steuerelemente, es fehlen jedoch die Vollbildschaltflächen. Und sie verwenden die Standard-eingebauten, da sie plötzlich einen AirPlay-Button mit 4.2 bekommen.
Es gibt einen Cheat:
MPMoviePlayerController *mpc = (...some instance...)
UIView *fsbutton = [[mpc view] viewWithTag:512];
[fsbutton setHidden:YES];
Der Haupt Haken ist, Sie haben es in viewDidAppear:
oder ähnliches zu tun, weil die Movieplayer Ansicht selbst irgendwo aufstellt innen didMoveToWindow
oder didMoveToSuperview
, die nach viewWillAppear:
passieren. So erhalten Sie einen kurzen Blick auf die Vollbild-Taste. Andere offensichtliche Fänge schließen ein: brüchig vs. Apple, das diesen 512 Markierungswert ändert (obwohl es in 3.2 - 4.2 funktioniert); und natürlich würde Apple es lieber nicht tun.
Die empfohlene Lösung besteht darin, den Steuerungsstil auf MPMovieControlStyleNone
einzustellen und eigene Transportsteuerelemente zu rollen, was mehr Arbeit bedeutet.
Das andere Problem ist, dass die Prise zu zoomen Geste, die auch den Benutzer in den Vollbild bringt umgeht diese nette Idee. – Roger
und versuchen Sie, Gesten zu entfernen – SAKrisT
Apple lehnt Ihre App wahrscheinlich ab, wenn Sie versuchen, den MPMovePlayerController über die öffentliche API hinaus zu ändern. Hier ein Zitat aus [Apples Dokumentation] (https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/Reference/Reference.html): "Betrachten Sie eine Movie-Player-Ansicht als undurchsichtig Sie können Ihre eigenen benutzerdefinierten Unteransichten zum Ebeneninhalt über dem Film hinzufügen, aber Sie dürfen keine der vorhandenen Unteransichten ändern. ** " – n8tr
tat einfach es:
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieEventFullscreenHandler:)
name:MPMoviePlayerWillEnterFullscreenNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieEventFullscreenHandler:)
name:MPMoviePlayerDidEnterFullscreenNotification
object:nil];
self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
}
- (void)movieEventFullscreenHandler:(NSNotification*)notification {
[self.moviePlayer setFullscreen:NO animated:NO];
[self.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];
}
Nette Idee, ich dachte, ich könnte damit eine Warnung auslösen, um zu erklären, warum Vollbild war im aktuellen Kontext nicht zulässig und zwang es, im eingebetteten Modus zu bleiben. Unglücklicherweise passiert es, dass Sie immer noch den Übergang zum Vollbildmodus erhalten und dann wird es wieder embedded, was wirklich schrecklich aussieht. – Roger
Ich habe gerade versucht, dies zu tun, aber leider Vollbild ignoriert die MPMovieControlStyleEmbedded und verwendet FullScreen, die, wenn ich Fullscreen dann schaltet, geht es noch größer :( – lordB8r
Vollbild-Taste zusammen mit Pausetaste entfernt werden kann.
[self.videoPlayer setControlStyle:MPMovieControlStyleNone];
um Schalter auf Vollbild-Modus zu deaktivieren, entweder Form Taste oder Pinch-Geste, können Sie diese verwenden:
moviePlayer.controlStyle = MPMovieControlStyleNone;
moviePlayer.view.userInteractionEnabled =NO;
Ich weiß, es ist ein wenig veraltet, aber trotzdem. Ich habe in dieser Richtung geforscht und sehe aus wie eine Antwort gefunden. Ich weiß nicht, warum es funktioniert, aber es ist so.
-(void) playMovieAtURL: (NSURL*) theURL {
MPMoviePlayerController* theMovie =
[[MPMoviePlayerController alloc] initWithContentURL: theURL];
//That line is for ARC. Without it, it may not work.
self.moviePlayer = theMovie;
theMovie.scalingMode = MPMovieScalingModeAspectFill;
theMovie.controlStyle = MPMovieControlStyleFullscreen;
theMovie.repeatMode = MPMovieRepeatModeOne;
//Here you'd better use your custom ViewController subclass, if you want autorotating and all that stuff.
UIViewController * vc = [UIViewController new];
[vc.view addSubview:theMovie.view];
theMovie.fullscreen = YES;
theMovie.view.frame = vc.view.bounds;
vc.view = theMovie.view;
[self presentModalViewController:vc animated:YES];
theMovie.fullscreen = YES;
[theMovie prepareToPlay];
[theMovie play];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}
// Wenn der Film fertig ist, lassen Sie den Controller los.
-(void) myMovieFinishedCallback: (NSNotification*) aNotification
{
[self dismissModalViewControllerAnimated:YES];
MPMoviePlayerController* theMovie = [aNotification object];
[[NSNotificationCenter defaultCenter]
removeObserver: self
name: MPMoviePlayerPlaybackDidFinishNotification
object: theMovie];
[self.moviePlayer.view removeFromSuperview];
self.moviePlayer = nil;
// Release the movie instance created in playMovieAtURL:
}
Wenn das nur, was Sie tun wollen, ist disable Prise vollen Umfang nutzen zu gehen (dhalte Interaktion aktiviert und was auch immer Kontrolle Stil, den Sie mögen), können Sie diese verwenden:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *set = [event allTouches];
NSArray *arr = [set allObjects];
for (int i = 0; i < arr.count; i++) {
UITouch *touch = (UITouch *) [arr objectAtIndex:i];
NSArray *recognisers = touch.gestureRecognizers;
for (UIGestureRecognizer *recogniser in recognisers) {
if (recogniser.enabled && [recogniser isMemberOfClass:[UIPinchGestureRecognizer class]]) {
recogniser.enabled = NO;
}
}
}
}
Einfachen Block Prise Zoom hier
zu entfernen hoffen, dass es
helfen, es mit mir auf iOS6 arbeiten
for (UIView *view in moviePlayer.view.subviews) {
for(UIPinchGestureRecognizer *pinch in view.gestureRecognizers){
if([pinch isKindOfClass:[UIPinchGestureRecognizer class]])
[view removeGestureRecognizer:pinch];
}
}
Sie können controlStyle auf Vollbild setzen. Diese Steuerelemente sind etwas anders, aber es gibt keine Fullscreen-Schaltfläche!
[_moviePlayerController setControlStyle:MPMovieControlStyleFullscreen];
Genius! Dies sollte definitiv die beste Antwort. – PICyourBrain
Dies funktionierte auf iOS 7, iPhone 5s.
Beachten Sie, dass ich nur auf "DID" und nicht auf die "WILL" -Benachrichtigung zu hören sowie animiert. Ich denke, das funktioniert, weil es dem System Zeit gibt zu reagieren. Wenn ich die "WILL" und "DID" wie in den Antworten oben erwähnt verwendet habe, führte dies zu einem schwarzen Bildschirm ohne Kontrollen. Es gibt einen leichten Glitch, der sichtbar ist, wenn der Übergang auftritt, aber ich brauche die Play/Scrub-Buttons von Embedded.
Leider keine oben für mich gearbeitet richtig, so die oben Kommissionierung ich implementiert die folgenden (und hat gut funktioniert):
- Ausblenden der Vollbild-Taste.
diesen Code in der Methode hinzufügen, wo Sie den Video-Player initialisieren.
.... //Because we have to wait until controllers are shown [self performSelector:@selector(hideFullscreenButton) withObject:self afterDelay:0.5]; ...
die Methoden hinzufügen:
-(void) hideFullscreenButton{ //Hide full screen mode button [self hideFullscreenSubview:movieClip.view.subviews]; } -(void) hideFullscreenSubview:(NSArray*)arr{ for(UIView *v in arr){ if([v.subviews count]>0) [self hideFullscreenSubview:v.subviews]; else NSLog(@"%@",v); if(v.frame.origin.x==975){ v.hidden=TRUE; } } }
Das Problem beruht, dass es keinen Tag, das Sie verstecken müssen sehen zu identifizieren ist. In meinem Fall finde ich es durch die Ansichtskoordinaten heraus.
- Überschreiben Sie die Tippgesten, wenn kein Vollbildzoom möglich ist.
movieClip.controlStyle = MPMovieControlStyleEmbedded; //Disable tap for not allowing that video control set on a full screen mode. UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doSingleTap)]; singleTap.numberOfTapsRequired = 1; [movieClip.view addGestureRecognizer:singleTap]; UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doDoubleTap)]; doubleTap.numberOfTapsRequired = 2; [movieClip.view addGestureRecognizer:doubleTap]; [singleTap requireGestureRecognizerToFail:doubleTap];
, und die Auswahlmethoden hinzufügen:
-(void) doSingleTap{ //DO NOTHING!!! } -(void) doDoubleTap{ //DO NOTHING!!! }
Die erste Lösung arbeitete perfekt für mich, thx! Auf der Unterseite der Swift-Version – diegomen
versteckt es den Wäscher nicht die Vollbild-Taste –
ein Put UIView
oder UIButton
mit transparentem Hintergrund auf der Ansicht, dass das Video zeigt, so dass der Benutzer nicht in der Lage sein wird, Tippe auf die Ansicht, die das Video enthält.
Dies ist die Swift-Version der ersten Lösung von Javier Calatrava Llaveria:
func hideFullScreenButton() {
self.hideFullScreenSubview((self.moviePlayerController?.view.subviews)!)
}
func hideFullScreenSubview(subviews: [UIView]) {
for view: UIView in subviews {
if view.subviews.count > 0 {
self.hideFullScreenSubview(view.subviews)
}
if view.frame.origin.x == 631 {
view.hidden = true
}
}
}
Und wenn der Benutzer tippt auf Play:
self.performSelector(#selector(VideoViewController.hideFullScreenButton), withObject: self, afterDelay: 0.5)
(VideoViewController ist die View-Controller, in dem ich habe der MPMoviePlayerController)
- 1. MPMoviePlayerController, Vollbild nicht zulassen, aber Navigation durch Clip zulassen?
- 2. Problem Video in MPMoviePlayerController für iPad
- 3. MPMoviePlayerController Overlay iOS 6
- 4. AVPlayer Vollbild
- 5. iPad SDK: Embedded YouTube Film spielt Vollbild-Version hinter UIWebView
- 6. iPad presentViewController ist immer Vollbild (brauche formSheet) iOS6
- 7. UIWebView Streaming Youtube geht nicht auf Vollbild auf iPad
- 8. Web App - iPad webkitEnterFullscreen - Programatically Vollbild-Video geht
- 9. Home-Taste deaktivieren auf dem iPhone/iPad
- 10. MPMoviePlayerController Ausgangsbild
- 11. MPMoviePlayerController Stottern
- 12. MPMoviePlayerController iPhone 3G & .mov Dateiformat
- 13. iOS: Wie MPMoviePlayerController verwenden
- 14. Ipad Wiedergabe unvollständige Videodatei
- 15. So deaktivieren Sie Google Web Viewer Vollbild-Option
- 16. Wie kann ich die Vollbild-Schaltfläche in den standardmäßigen HTML5-Videosteuerungen des iPads ausblenden/deaktivieren?
- 17. Wie kann MPMoviePlayerController Freigabe Speicher
- 18. Startbildschirm .XIB mit Vollbild-Bildansicht
- 19. Kamera nicht im Vollbild anzeigen
- 20. MPMoviePlayerController Suchschaltfläche stoppt das Video in IOS7?
- 21. MPMoviePlayerController stagniert häufig
- 22. MPMoviePlayerController iO7 Problem
- 23. MPMoviePlayerController Layout-Constraint-Probleme
- 24. MPMoviePlayerController Aktuelle Spieldetails?
- 25. MPMoviePlayerController und UIWebView
- 26. MPMoviePlayerController Spiele Live Stream
- 27. Mehrere MPMoviePlayerController Instanzen
- 28. MPMoviePlayerController% der Daten bufferd
- 29. Inhalt von MPMoviePlayerController ändern
- 30. MPMoviePlayerController Wiedergabe Problem
:( Danke !! – MathieuF