检查YouTube视频(MPMoviePlayer)是否已结束

时间:2011-05-07 10:50:05

标签: iphone sdk webview youtube mpmovieplayer

我有一个带有网页视图的视图,可以加载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];
}

1 个答案:

答案 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 ...
    }
}