UIGestureRecognizer auf MPMoviePlayerViewController
-
28-09-2019 - |
Frage
Ich frage mich, ob jemand von euch begegnet sind ähnliche Probleme und natürlich geschah eine richtige oder nicht so richtige zu finden (aber funktionierende) Lösung / Abhilfe.
Ich bin mit einem MPMoviePlayerViewController und ich versuche zu einer Add Swipe-Geste Recognizers auf die MPMoviePlayerViewControllers anzuzeigen.
moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL: [NSURL URLWithString: currentChannel.StreamURI]];
[MoviePlayerViewController.moviePlayer setControlStyle: MPMovieControlStyleNone];
moviePlayerViewController.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
moviePlayerViewController.moviePlayer.shouldAutoplay = YES;
[MoviePlayerViewController.moviePlayer setScalingMode: MPMovieScalingModeAspectFit];UISwipeGestureRecognizer * swipeGestureRight = [[UISwipeGestureRecognizer alloc] initWithTarget: Selbst Aktion: @selector (previousChannel)];
swipeGestureRight.direction = UISwipeGestureRecognizerDirectionRight;
[MyMoviePlayerViewController.view addGestureRecognizer: swipeGestureRight];
[Self.view addSubview: moviePlayerViewController.view];
Wie auch immer, es „Art von Arbeiten“, aber wenn ich die Prüfung die Sache durch die Geste zu tun auf der laufenden Video-Player-Instanz (beide entweder im Simulator oder auf dem Gerät) die App abstürzt und die Konsolen-Staaten
** -[CFRunLoopTimer invalidate]: message sent to deallocated instance 0xf074bb0
hat jemand von euch eine Idee zu diesem Thema?
Lösung
Es scheint, dass iOS Ihr MPMoviePlayerViewController
Objekt zu befreien und dann später eine Nachricht an sie zu senden. Ich würde die Instanz ein Mitglied Ihrer Klasse vorschlagen zu machen und dann eine Eigenschaft für sie instanziiert wird, zB:
@property (nonatomic, retain) MPMoviePlayerViewController *moviePlayerViewController;
... zusammen mit der entsprechenden @synthesize
Deklaration Ihrer Klasse Implementierungsdatei. Wenn Ihr Objekt Zuweisung, sollten Sie dann tun:
self.moviePlayerController = [[[MPMoviePlayerViewController alloc] initWithContentURL:@"yourUrl"] autorelease];
Und schließlich, lassen Sie das Objekt, indem es zu nil
in Ihrer dealloc
Methode setzen.