Tôi đang viết Plugin cho AVPlayer
trong ios. Tôi cần biết khi nào người dùng nhấp vào nút Xong trong AVPlayerViewController
(Tôi muốn biết khi nào người dùng đóng video) và tôi không truy cập vào đối tượng AVPlayerViewController
. Tôi đã kiểm tra sự kiện và chỉ tìm thấy thuộc tính tốc độ trong AVPlayer
được đặt thành 0 nhưng trong tình huống tạm dừng cũng là tỷ lệ được đặt thành 0. làm thế nào tôi tìm ra hai tình huống này? cảm ơn tất cả.phát hiện AVPlayerViewController Xong nút bấm?
6
A
Trả lời
0
Tôi đã gặp sự cố khi tôi phát triển trình phát ở chế độ cửa sổ. Đó là currently impossible không có thủ thuật. Vì vậy, tôi đã sử dụng KVO để quan sát contentOverlayView
mà thực sự là một cái nhìn đầy đủ kích thước của AVPlayerViewController
. Mã là một chút phức tạp. Trong ví dụ bên dưới, thuộc tính playerView
là chế độ xem từ xib/bảng phân cảnh trên bộ điều khiển chế độ xem (xem phần đính kèm).
#import <AVKit/AVKit.h>
#import <AVFoundation/AVFoundation.h>
static NSString * const kBoundsProperty = @"bounds";
static void * kBoundsContext = &kBoundsContext;
@interface ViewController()
@property (nonatomic, strong) AVPlayerViewController *playerViewController;
// View for windowed mode.
@property (weak, nonatomic) IBOutlet UIView *playerView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.playerViewController = [[AVPlayerViewController alloc] init];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// Because in -viewDidLoad frame is unknown.
[self loadPlayerView];
}
- (void)loadPlayerView {
NSURL *videoURL = [NSURL URLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"];
AVPlayer *player = [[AVPlayer alloc] initWithURL:videoURL];
self.playerViewController.player = player;
[player play];
[self addChildViewController:self.playerViewController];
[self.playerView addSubview:self.playerViewController.view];
// MARK: I would recommend to use constraints instead of frame.
self.playerViewController.view.frame = self.playerView.bounds;
[self.playerViewController.contentOverlayView addObserver:self forKeyPath:kBoundsProperty options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:kBoundsContext];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if (context == kBoundsContext) {
CGRect oldBounds = [change[NSKeyValueChangeOldKey] CGRectValue];
CGRect newBounds = [change[NSKeyValueChangeNewKey] CGRectValue];
BOOL wasFullscreen = CGRectEqualToRect(oldBounds, [UIScreen mainScreen].bounds);
BOOL isFullscreen = CGRectEqualToRect(newBounds, [UIScreen mainScreen].bounds);
if (isFullscreen && !wasFullscreen) {
if (CGRectEqualToRect(oldBounds, CGRectMake(0.0, 0.0, newBounds.size.height, newBounds.size.width))) {
NSLog(@"Rotated fullscreen");
} else {
NSLog(@"Entered fullscreen");
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"DidEnterInFullscreen" object:nil];
});
}
} else if (!isFullscreen && wasFullscreen) {
NSLog(@"Exited fullscreen");
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"DidExitFromFullscreen" object:nil];
});
}
}
}
@end
Các vấn đề liên quan
- 1. Không nút "Xong" trên AVPlayerViewController
- 2. Tạo AVPlayerViewController tiếp tục phát sau khi xong nút nhấn
- 3. Phát hiện nút bấm bằng UIAlertView
- 4. Nhanh chóng, cách phát hiện cảm ứng khi phát video trong AVPlayerViewController
- 5. Phát hiện các nút bấm tai nghe trong OS X
- 6. Hiện nhanh nhẹn trong một nút bấm
- 7. Phát hiện khi Gmail tải xong bằng jQuery và GreaseMonkey
- 8. Phát hiện khi một đoạn video YouTube đã chơi xong
- 9. Phát video từ Youtube trong AVPlayerViewController trong Swift
- 10. iOS Safari phát hiện khi người dùng nhấp vào "Xong" trong trình phát bản địa
- 11. Trình phát hiện nút bấm của trình duyệt JavaScript hoặc jQuery
- 12. Cách phát hiện nút bấm gamepad trên OSX 10.5 trở lên?
- 13. Phát hiện phím bấm Trình đơn vật lý trong Android
- 14. phát hiện bàn phím iPad Ẩn nút
- 15. phát hiện một nút bấm trên thanh hành động trở lại - (OnOptionsItemSelected không gọi khi bấm vào nút thanh hành động trở lại)
- 16. iOS AVPlayerViewController không hiển thị điều khiển phát lại
- 17. update_order_review() trên nút bấm
- 18. Nút Bấm Listeners trong Android
- 19. Thực hiện một tập lệnh python trên nút bấm
- 20. Cách phát hiện âm thanh đã phát xong trong trang web?
- 21. Làm thế nào để phát hiện khi một tập tin mp3 phát xong
- 22. Làm thế nào để bạn phát hiện khi âm thanh HTML5 đã phát xong (nhiều lần)?
- 23. phát video youtube bên trong uiwebview. Làm cách nào để xử lý nút "xong"?
- 24. Góc 2 HostListener bấm phím phát hiện phím thoát?
- 25. Phát hiện các phím bấm kết hợp (Control, Alt, Shift)?
- 26. Phát hiện một phím bấm kép trong AutoHotkey
- 27. Làm thế nào để phát hiện các phím bấm khi bấm vào AngularJS
- 28. Nút bấm lửa trong AngularJS
- 29. Một nút bấm tải lên
- 30. Nút bấm đầu tiên chậm
các [Giải pháp] (http://stackoverflow.com/a/41281453/4593553) làm việc cho tôi. – Jerome