AVPlayerViewController定制覆盖(AVPlayerViewController

2019-10-21 08:17发布

从迁移到MPMoviePlayer已经AVkit给我带来了一个阻塞问题。

我需要显示在AVPlayerViewController定制的tableView。 我可以这样实现代码如下低谷

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

并且它是可见的,但它并没有收到任何点击/滑动事件。

任何想法,为什么发生这种情况或我怎么能在哪里会收到触摸事件,即使在全屏模式下的地方添加表格视图?

Answer 1:

[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;
            }
        }
    }
}
}

我知道这是不是一个很好的方式做到这一点,但它是我设法补充说,还接收播放器上的触摸事件的一些自定义UI的唯一途径。

干杯!



文章来源: AVPlayerViewController with custom overlay