具有自定义叠加层的AVPlayerViewController

时间:2014-12-02 14:47:20

标签: objective-c customization mpmovieplayercontroller avplayer

从MPMoviePlayer迁移到AVkit导致我遇到阻塞问题。

我需要在AVPlayerViewController上显示自定义tableView。 我可以通过这个表格来看

[self.avVideoPlayer.contentOverlayView addsubiew:self.mycustomTableView]

并且可见,但它不会收到任何点击/滑动事件。

为什么会发生这种情况或者如何在即使在全屏模式下接收触摸事件的地方添加表格视图?

1 个答案:

答案 0 :(得分:0)

[self.view addSubview:btn];

这将在最小化的播放器中添加按钮。

现在,对于全屏场景,您需要为videoBounds添加一个观察者,这是我的代码:

   [self.avVideoPlayer addObserver:self forKeyPath:@"videoBounds" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:NULL];

现在有一个不那么漂亮的部分:

- (void)observeValueForKeyPath: (NSString*) path
                  ofObject: (id)object
                    change: (NSDictionary*)change
                   context: (void*)context {

NSLog(@"SOME OBSERVER DID THIS: %@ , %@",object,change);
if ([self playerIsFullscreen]) {
    for(UIWindow* tempWindow in [[UIApplication sharedApplication]windows]){
        for(UIView* tempView in [tempWindow subviews]){

            if ([[tempView description] rangeOfString:@"UIInputSetContainerView"].location != NSNotFound){
                UIButton *testB = [[UIButton alloc] initWithFrame: CGRectMake(20, 20, 400, 400)];
                testB.backgroundColor = [UIColor redColor];
                [testB addTarget:self action:@selector(buttonTouch) forControlEvents:UIControlEventTouchDown];
                [tempView addSubview:testB];

                break;
            }
        }
    }
}
}

我知道这不是一个很好的方法,但这是我设法添加一些自定义用户界面的唯一方法,也可以在播放器上接收触摸事件。

干杯!