Как предотвратить жест щипка в MPMoviePlayerViewController?

Поскольку MPMoviePlayerViewController поддерживает жест щипка (два пальца раздвигаются), чтобы сделать проигрыватель фильмов полноэкранным, есть ли способ удалить этот жест? Потому что, если я использую жест, фильм все равно воспроизводится без видео. Я думаю, что представление контроллера фильма удалено из суперпредставления.

Я попытался переопределить touchesBegan и уведомления WillEnterFullScreenNotification и DidEnterFullScreenNotfication, но это не сработало.


person Raptor    schedule 28.09.2010    source источник


Ответы (3)


У меня была аналогичная проблема с «жестом сжатия», переориентирующим видеоэкран с альбомной на портретную. Я решил это, обратившись к свойству представления объекта MPMoviePlayerController и установив userInteractionEnabled в NO.

moviePlayer = [[MPMoviePlayerController alloc] init];
[moviePlayer view].userInteractionEnabled = NO;

Это предотвращает проникновение любых прикосновений пользователя и изменение ориентации или полноэкранного состояния MPMoviePlayerController.

person jontron    schedule 28.12.2010
comment
Этот код также отключает элементы управления видео. Я добавил рабочее решение. - person Pion; 01.11.2013

В моем случае принятый ответ от jontron/curhipster не сработал.

Но когда я установил для moviePlayers controlStyle значение MPMovieScalingModeFill, надоедливая щепотка была проигнорирована.

Мой код:

NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"tutorial" ofType:@"mov"];
NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];
self.moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlaybackComplete:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:self.moviePlayerController];

[self.view addSubview:self.moviePlayerController.view];
self.moviePlayerController.fullscreen = YES;
self.moviePlayerController.scalingMode = MPMovieScalingModeFill;
self.moviePlayerController.controlStyle = MPMovieControlStyleFullscreen;
[self.moviePlayerController play];
person RMeijs    schedule 14.01.2013

Это правильное решение

[[[self.moviePlayer view] subviews] enumerateObjectsUsingBlock:^(id view, NSUInteger idx, BOOL *stop) {
           [[view gestureRecognizers] enumerateObjectsUsingBlock:^(id pinch, NSUInteger idx, BOOL *stop) {
                if([pinch isKindOfClass:[UIPinchGestureRecognizer class]]) {
                    [view removeGestureRecognizer:pinch];
                }
           }];
      }];
person Pion    schedule 31.10.2013