2

Я пытался добавить салфетки жест player.view.subviews[0].Как добавить салфетки жест на полноэкранный режим MPMoviePlayerController в iOS6

Я гугле много раз, но не мог получить рабочий раствор.

Мой код очень нормальный. точно так же, как

UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)]; 
UIView *subView = player.view.subviews[0]; 
[subView addGestureRecognizer:swipeLeft]; 

Он работает в IOS5, но не в 6, когда плеер находится в полноэкранном режиме. Любые предложения?

ответ

2

Когда Mpmovieplaertsontroller входит в полноэкранный режим, он создает дополнительное окно (обычно последнее в списке окон приложения). Из этого мы можем протестировать все возможные виды и подпрограммы и найти необходимые элементы управления. Тогда вы можете положить все, что вам нужно. Например, как добавить swipes в MPMoviePlayer.

- (void)didEnterFullScreen:(NSNotification*)notification { 
    [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(showFullScreenControls) userInfo:nil repeats:NO]; 
} 

- (void)showFullScreenControls { 
    NSArray *windows = [[UIApplication sharedApplication] windows]; 
    UIWindow* mpfullscreenwindow = [windows lastObject]; 
    gestureView = mpfullscreenwindow.subviews[0]; 
    testbutton = [UIButton buttonWithType:UIButtonTypeSystem]; 
    [testbutton setTitle:@"Test" forState:UIControlStateNormal]; 
    testbutton.frame = CGRectMake(10, 50, 100, 50); 
    testbutton.backgroundColor = [UIColor greenColor]; 
    [testbutton addTarget:self action:@selector(alertBtnAction) forControlEvents: UIControlEventTouchUpInside]; 
    [mpfullscreenwindow addSubview:testbutton]; 
    [gestureView addGestureRecognizer:_leftSwipeRecognizer]; 
    [gestureView addGestureRecognizer:_rightSwipeRecognizer]; 
} 
+0

Работает в IOS7. Большое спасибо! BTW: Он все еще не работает в IOS6. – echo

0

Вместо того, чтобы добавлять распознаватели жестов к одному из видов плеера, вы можете добавить распознаватели в свой собственный вид (тот, который содержит вид игрока). Просто убедитесь, что очистили cancelsTouchesInView, чтобы дать основные взгляды трещину при касании.

UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)]; 
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; 
swipeLeft.cancelsTouchesInView = NO; 
[self.view addGestureRecognizer:swipeLeft]; 

Я успешно использовал этот подход в той же ситуации.

+0

Я пробовал этот путь, но до сих пор не повезло. В любом случае, спасибо за вашу помощь. BTW: Моя версия ios - 6.1.3. – echo

0

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

func moviePlayerDidEnterFullscreen (notification : NSNotification) { 
    self.window?.addGestureRecognizer(swipeUpGestureRecognizer) 
}