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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top