当我将它放在弹出窗口中时,我没有与视频播放器进行交互
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
视图的触摸被忽略,因为它的一个超级视图上有手势识别器。提到的识别器从方法返回 NO
:canBePreventedByGestureRecognizer:
.
为 AVPlayerViewController
拥有的识别器添加例外解决了问题,UI 再次可用。
当我点击图片时,会显示一个带有视频的弹出窗口。在该弹出窗口中,视频自动启动。问题是我没有与视频的交互性(播放、暂停等)。所以现在,我找到了使用 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
视图的触摸被忽略,因为它的一个超级视图上有手势识别器。提到的识别器从方法返回 NO
:canBePreventedByGestureRecognizer:
.
为 AVPlayerViewController
拥有的识别器添加例外解决了问题,UI 再次可用。