当我将它放在弹出窗口中时,我没有与视频播放器进行交互

I don't have interactivity with the video player when I put it in a pop-up

当我点击图片时,会显示一个带有视频的弹出窗口。在该弹出窗口中,视频自动启动。问题是我没有与视频的交互性(播放、暂停等)。所以现在,我找到了使用 AVPlayerItemDidPlayToEndTimeNotification 循环它的方法,但我希望用户能够 play/pause。 这是我的代码:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:player];

    NSURL *url = [NSURL fileURLWithPath:mediaPath];
    player = [[AVPlayer alloc] initWithURL: url];
    controller = [[AVPlayerViewController alloc] init];
    controller.player = player;
    controller.delegate = self;
    controller.showsPlaybackControls = YES;

    UIImageView *popView = [[[[[[NSBundle mainBundle] loadNibNamed:mediaType owner:self options:nil] objectAtIndex:0] viewLoadedFromXib] subviews] objectAtIndex:0];
    [controller.view setFrame:CGRectMake(0, 0, 850, 600)];
    [popView addSubview:controller.view];

    [player play];

我精确的是,当我点击视频时,下面会出现暂停视频的栏,但是当我点击按钮时,没有任何反应。

第一次编辑:似乎有一个 AVTouchIgnoringView 已由 AVPlayerViewController 自动添加。似乎有一个 link with UserInteraction...但我尝试将其设置为 YES 但没有成功。可能是我不这样做是为了好看。有什么想法吗?

2ND 编辑:这是添加 AVTouchIgnoringView 的 setFrame。那么你知道如何在不自动添加 AVTouchIgnoringView 的情况下更改框架的大小吗?

首先,我觉得你放视频的时候UIImageView不对,建议你换个UIView。

        UIView *popView = [[[[[[NSBundle mainBundle] loadNibNamed:mediaType owner:self options:nil] objectAtIndex:0] viewLoadedFromXib] subviews] 

其次,我认为您可能与视频有用户互动。尝试更大的尺寸以显示带控件的底部栏。

//视频调整大小

 controller.view.frame = CGRectMake(0, 0, 900, 600);//for example

在我的例子中,AVPlayerViewController 视图的触摸被忽略,因为它的一个超级视图上有手势识别器。提到的识别器从方法返回 NOcanBePreventedByGestureRecognizer:.

AVPlayerViewController 拥有的识别器添加例外解决了问题,UI 再次可用。