#iphone #sdk #webview #youtube #mpmovieplayer
#iPhone #sdk #webview #YouTube #mpmovieplayer
Вопрос:
У меня есть просмотр с веб-просмотром, который загружает видео с YouTube. Я использую следующие методы для автоматического запуска видео с YouTube при загрузке веб-просмотра.
Веб-просмотр открывает собственный видеоплеер iPhone. Есть ли какой-либо способ проверить, закончилось ли видео или пользователь нажал кнопку «OK» проигрывателя фильмов, и проигрыватель, таким образом, закрыт?
Это методы, которые я использую для автоматического запуска веб-просмотра:
- (UIButton *)findButtonInView:(UIView *)view {
UIButton *button = nil;
if([view isMemberOfClass:[UIButton class]]) {
return (UIButton *)view;
}
if(view.subviews amp;amp; [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];
}
Ответ №1:
Apple не отправляет [документированное] уведомление об этом, поэтому вам придется немного поднапрячься.
Способ, которым я это делаю, — проверить keyWindow приложения. Я почерпнул идею отсюда.
в вашем файле .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 ...
}
}