如何在IOS6中的全屏模式MPMoviePlayerController上添加滑动手势

时间:2013-06-22 03:56:28

标签: objective-c ios6 mpmovieplayercontroller fullscreen gesture

我尝试向player.view.subviews[0].

添加滑动手势

我用谷歌搜索多次但无法获得有效的解决方案。

我的代码很正常。就像

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

当播放器处于全屏模式时,它适用于IOS5但不适用于6。 有什么建议吗?

3 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

您可以将识别器添加到您自己的视图(包含播放器视图的视图)中,而不是将手势识别器添加到其中一个播放器的视图中。请务必清除cancelsTouchesInView,以便在触摸时给出基础视图。

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

我已经在同样的情况下成功使用了这种方法。

答案 2 :(得分:0)

当玩家进入全屏模式时(首先捕获该通知事件),我能够向窗口添加手势识别器。

v49-52