objective-c - playerItemDidReachEnd 移动到错误的 ViewController
问题描述
我的应用程序有一个起始页和一个带有播放视频按钮的第二页。视频播放完毕后,AVPlayer 会使用 playerItemDidReachEnd 关闭。但是由于某种原因,当播放器被解雇时,它显示的是起始页而不是第二页。我怎样才能让它显示第二页呢?
#import "ViewController.h"
@import AVKit;
@import AVFoundation;
@interface ViewController ()
@property(nonatomic, readonly) AVPlayerItem *currentItem;
@end
@implementation ViewController
AVPlayerViewController *playerViewController;
- (void)viewDidLoad {
[super viewDidLoad];
playerViewController = [[AVPlayerViewController alloc] init];
}
-(void)playerItemDidReachEnd:(NSNotification *) notification {
//remove the player
[self dismissViewControllerAnimated:NO completion:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (IBAction)playVideo:(id)sender {
NSURL *url = [NSURL URLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"];
AVURLAsset *asset = [AVURLAsset assetWithURL: url];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset: asset];
AVPlayer * player = [[AVPlayer alloc] initWithPlayerItem: item];
playerViewController.player = player;
UIScreen *mainScreen = [UIScreen mainScreen];
CGRect viewRect = mainScreen.bounds;
playerViewController.view.frame = viewRect;
playerViewController.showsPlaybackControls = YES;
[self.view addSubview:playerViewController.view];
[player play];
/* When the player item has played to its end time we'll dismiss the controller */
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:playerViewController.player.currentItem];
}
@end
解决方案
如果我正确理解您的代码,您的“第二页”是ViewController
.
您正在添加AVPlayerViewController
by [self.view addSubview:playerViewController.view];
,因此您需要通过调用删除此视图
[playerViewController.view removeFromSuperview]
。
之后[self dismissViewControllerAnimated:NO completion:nil];
,你解散整个ViewController
,不仅如此AVPlayerViewController
。
推荐阅读
- python - Tensorflow 不使用 GPU,发现 xla_gpu 不是 gpu
- python - 检查混合类型列的值是否等于 0(使用 timedelta 和浮点数)
- python - Python 中的 Apriori 结果
- excel - 在 Excel 单元格中写入主题标签的问题
- javascript - 使用 onClick 事件渲染 JSX Switch Case
- ios - UITableView 中的 iOS 13 UISegmentedControl 缓存先前的选择
- php - 如何在 laravel 的 highchart bar consoletv/charts 包上显示数据标签
- sql - 如果日期是连续的,则查询并返回用户请求
- discord.js - 如何打开包含 json 内容的页面并将其放入变量中
- ruby-on-rails - 设计新用户注册不保存