UigestureReCognizer no mpmovieplayerviewController
-
28-09-2019 - |
Pergunta
Gostaria de saber se algum de vocês encontrou problemas semelhantes e, é claro, encontrou uma solução/solução alternativa adequada ou não tão adequada (mas funcionando).
Estou usando um mpmovieplayerviewcontroller e estou tentando um add swipe-gestons reconhecedores na visualização MPMoviePlayerViewControllers.
MoviePlayerViewController = [[MPMoviePlayerviewController aloc] initwithContenturl: [NSURL URLWITHSTRING: CurrentCannel.streamuri]];
MoviePlayerViewController.MoviePlayer SetControlStyle: mpMoVieControlStyLenOne];
MoviePlayerviewController.MoviePlayer.MoviesourCetype = MPMoviesourCetyPerenting;
MoviePlayerviewController.MoviePlayer.shouldAutoPlay = sim;
MoviePlayerViewController.MoviePlayer SetScalingMode: mpmoviescalingModeaspectFit];UiswipeGestureRecognizer *swipeGestureRIright = [[uiswipeGestureCognizer aloc] initwithTarget: auto -ação: @selector (anteriorchannel)];
swipeGestureRright.direction = uiswipeGestureCognizerDirectionRight;
myMovieplayerviewController.View AddestureRecognizer: SwipeGestureRight];
Self.View AddSubView: MoviePlayerViewController.View];
De qualquer forma, "tipo de obra", mas quando estou testando a coisa toda, fazendo o gesto no topo da instância do jogador de filme em execução (ambos, no simulador ou no dispositivo), o aplicativo trava e o console declara
** -[CFRunLoopTimer invalidate]: message sent to deallocated instance 0xf074bb0
Algum de vocês tem uma ideia sobre esse tópico?
Solução
Parece que o iOS está liberando seu MPMoviePlayerViewController
Objeto e depois envie uma mensagem para ele mais tarde. Eu sugeriria fazer da instância um membro da sua classe e depois instantar uma propriedade para ela, por exemplo:
@property (nonatomic, retain) MPMoviePlayerViewController *moviePlayerViewController;
... junto com o correspondente @synthesize
Declaração Arquivo de implementação da sua classe. Ao alocar seu objeto, você deve fazer:
self.moviePlayerController = [[[MPMoviePlayerViewController alloc] initWithContentURL:@"yourUrl"] autorelease];
E, finalmente, solte o objeto configurando -o para nil
na tua dealloc
método.