2

我试图添加一个滑动手势player.view.subviews[0].

我用谷歌搜索了很多次,但找不到有效的解决方案。

我的代码很正常。就像

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

当播放器处于全屏模式时,它在 IOS5 中有效,但在 6 中无效。有什么建议么?

4

3 回答 3

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];
}
于 2014-03-20T17:14:48.347 回答
0

您可以将识别器添加到您自己的视图(包含播放器视图的视图)中,而不是将手势识别器添加到玩家的视图之一。只需确保清除cancelsTouchesInView以使潜在的视图一触即发。

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

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

于 2013-06-23T01:15:52.963 回答
0

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

func moviePlayerDidEnterFullscreen (notification : NSNotification) {
    self.window?.addGestureRecognizer(swipeUpGestureRecognizer)
}
于 2016-07-28T02:31:50.877 回答