1

YouTube ビデオをロードする Web ビューのビューがあります。次の方法を使用して、Web ビューが読み込まれたときに 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];
}
4

1 に答える 1

3

Appleはこれについて[文書化された]通知をプッシュしないので、少し注意が必要です。

私のやり方は、アプリケーションのkeyWindowをチェックすることです。ここからアイデアを得ました。

.hファイルで、タイマーと目的のkeyWindowを追跡します。

NSTimer *windowTimer;
UIWindow *keyWindow;

.mファイルには、次のものが必要です。

- (void)viewDidLoad {
    [super viewDidUnload];
    keyWindow = [[UIApplication sharedApplication] keyWindow];
}

次に、デリゲートメソッドを編集し、新しいメソッドを1つ追加します。

- (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 ...
    }
}
于 2011-05-14T04:06:48.513 に答える