1

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

Я использую MPMoviePlayerViewController, и я пытаюсь добавить указатели Swipe-Gesture на представление 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: self action: @selector (previousChannel)];
swipeGestureRight.direction = UISwipeGestureRecognizerDirectionRight;
[myMoviePlayerViewController.view addGestureRecognizer: swipeGestureRight];
[self.view addSubview: moviePlayerViewController.view];

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

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

У вас есть идея по этой теме?

ответ

1

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

@property (nonatomic, retain) MPMoviePlayerViewController *moviePlayerViewController; 

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

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

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