我有一个带有网页视图的视图,可以加载YouTube视频。我正在使用以下方法在加载网页视图时自动启动YouTube视频。
Web视图打开iPhone本机电影播放器。有没有办法检查视频是否已经结束,或者用户是否按下了电影播放器的“OK”按钮,从而关闭了播放器?
这些是我用于自动启动Web视图的方法:
- (UIButton *)findButtonInView:(UIView *)view {
UIButton *button = nil;
if([view isMemberOfClass:[UIButton class]]) {
return (UIButton *)view;
}
if(view.subviews && [view.subviews count] > 0) {
for(UIView *subview in view.subviews) {
button = [self findButtonInView:subview];
if(button) return button;
}
}
return button;
}
- (void)webViewDidFinishLoad:(UIWebView *)_webView {
UIButton *b = [self findButtonInView:_webView];
[b sendActionsForControlEvents:UIControlEventTouchUpInside];
}
答案 0 :(得分:3)
Apple没有针对此推送[记录]通知,所以你必须有点棘手。
我这样做的方法是检查应用程序的keyWindow。我从here得到了这个想法。
在.h文件中,跟踪你的计时器和所需的keyWindow:
NSTimer *windowTimer;
UIWindow *keyWindow;
在.m文件中,您需要以下内容:
- (void)viewDidLoad {
[super viewDidUnload];
keyWindow = [[UIApplication sharedApplication] keyWindow];
}
然后编辑您的委托方法并添加一个新方法:
- (void)webViewDidFinishLoad:(UIWebView *)_webView {
UIButton *b = [self findButtonInView:_webView];
[b sendActionsForControlEvents:UIControlEventTouchUpInside];
// start checking the current keyWindow
windowTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(checkWindowStatus) userInfo:nil repeats:YES];
}
- (void) checkWindowStatus {
// if the key window is back to our application
if (keyWindow == [[UIApplication sharedApplication] keyWindow]) {
[windowTimer invalidate];
windowTimer = nil;
... window has dismissed, do your thing ...
}
}