UIGestureRecognizer на MPMoviePlayerViewController - PullRequest
1 голос
/ 17 июня 2010

Мне интересно, сталкивался ли кто-либо из вас с подобными проблемами и, конечно, случайно нашел правильное или не очень правильное (но работающее) решение / обходной путь.

Я использую MPMoviePlayerViewController и пытаюсь добавить распознаватели жестов смахивания в представление MPMoviePlayerViewControllers.

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: собственное действие: @selector (previousChannel)];
swipeGestureRight.direction = UISwipeGestureRecognizerDirectionRight;
[myMoviePlayerViewController.view addGestureRecognizer: swipeGestureRight];
[self.view addSubview: moviePlayerViewController.view];

в любом случае, это «вроде как работает», но когда я тестирую все это, делая жест поверх запущенного экземпляра видеоплеера (как в симуляторе, так и на устройстве), приложение вылетает и консоль сообщает

** -[CFRunLoopTimer invalidate]: message sent to deallocated instance 0xf074bb0

Кто-нибудь из вас имеет представление по этой теме?

1 Ответ

1 голос
/ 07 октября 2010

Похоже, что iOS освобождает ваш MPMoviePlayerViewController объект, а затем отправляет ему сообщение позже.Я бы предложил сделать экземпляр членом вашего класса, а затем создать для него свойство, например:

@property (nonatomic, retain) MPMoviePlayerViewController *moviePlayerViewController;

... вместе с соответствующим объявлением @synthesize файла реализации вашего класса.При выделении объекта вы должны выполнить:

  self.moviePlayerController = [[[MPMoviePlayerViewController alloc] initWithContentURL:@"yourUrl"] autorelease];

И, наконец, освободить объект, установив для него значение nil в вашем методе dealloc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...