2

我試圖輕掃手勢添加到player.view.subviews[0].如何添加滑動手勢在全屏模式下的MPMoviePlayerController在iOS6的

我GOOGLE了很多次,但未能得到有效的解決方案。

我的代碼很正常。就像

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

它工作在IOS5但不是在6時播放器處於全屏模式。 有什麼建議嗎?

回答

2

當Mpmovieplaertsontroller進入全屏模式時,它會創建一個額外的窗口(通常是應用程序窗口列表中的最後一個)。由此我們可以測試所有可能的視圖和子視圖並找到必要的控制。然後你可以把你需要的一切。 例如,如何添加滑動到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中工作。非常感謝! 順便說一句:它仍然不能在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) 
} 
相關問題