5

この手法この Youtube SDK ブログ投稿をユニバーサル アプリに組み合わせて使用​​して、YouTube ビデオを埋め込もうとしています。同じコードを使用する iPhone バージョンは正常に動作します。iPad ではビデオが埋め込まれ、埋め込まれた形で問題なく再生されますが、全画面ボタンをタップするとすぐにアプリがクラッシュします (ボタンが反応せず、デバイスが回転しません)。Youtube動画の音楽が流れ続けます。

ログに記録されたエラー メッセージはありませんが、アプリは「一時停止」または xCode でハングアップとして登録されます。クラッシュするたびに、com.apple.libdispatch-manager はスレッド 2 にあります。質問してください。エラーについて詳しく説明しますが、どこから始めればよいかわかりません。

私が試してみました:

  • UIWebView フレームのサイズを変更する
  • UIWebView は UIScrollView にありますが、スクロールビューから取り出してビューに追加すると、問題は同じです。
  • ビデオの変更
  • UIWebView で使用する html を this から this に変更しますが、結果ありません
  • YouTube リンクの形式を ?v=uniqueID から /v/uniqueID に変更する
  • 表示ビューをチェックしているのは rootviewcontroller です (ただし、ビデオはモーダルに埋め込まれており、rootviewcontroller ではありません)。

iOS 5.1 用にビルドしていますが、iOS6で実行している場合、これは発生しません

ビデオが埋め込まれているビューは、電話と iPad の両方でモーダルです。アプリでハッキングや異常なことが起こっているわけではありません。

Evernote のアプリでも同様の問題が発生しているという話があるようですが、関係があるかどうかはわかりません。

参考までに、YouTubeView サブクラス (UIWebView のサブクラス) を次に示します。

- (YouTubeView *)initWithStringAsURL:(NSString *)urlString frame:(CGRect)frame;
{
    if (self = [super init]) 
    {
        // Create webview with requested frame size
        self = [[YouTubeView alloc] initWithFrame:frame];

// HTML to embed YouTube video
//      NSString *youTubeVideoHTML = @"<html><head>
//                                       <body style=\"margin:0\">
//                                         <embed id=\"yt\" src=\"%@\"
//                                                type=\"application/x-shockwave-flash\"
//                                                width=\"%0.0f\" height=\"%0.0f\">
//                                         </embed>
//                                       </body>
//                                     </html>";

        NSString *youTubeVideoHTML = @"<html><head><meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = %0.0f\"/></head><body style=\"background:#FFF;margin-top:0px;margin-left:0px\"><div><object width=\"%0.0f\" height=\"%0.0f\"><param name=\"movie\" value=\"%@\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"%@\"type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"%0.0f\" height=\"%0.0f\"></embed></object></div></body></html>";

        // Populate HTML with the URL and requested frame size
//      NSString *html = [NSString stringWithFormat:youTubeVideoHTML, urlString, frame.size.width, frame.size.height];

        NSLog(@"html:\n %@", youTubeVideoHTML);

        NSString *html = [NSString stringWithFormat:youTubeVideoHTML, frame.size.width, frame.size.width, frame.size.height, urlString, urlString, frame.size.width, frame.size.height];

        NSLog(@"html:\n %@", html);

        // Load the html into the webview
        [self loadHTMLString:html baseURL:nil];
    }

    return self;
}
4

1 に答える 1

2

iOS5.0およびiOS5.1でのモーダルビューは、フルスクリーンビデオAFAIKでクラッシュを引き起こす問題です。彼らはそのバージョンのiOS(parentViewControllerおよびpresentingViewController)でビューの階層を変更しただけであり、それが余波です。私はずっと前にここでそれについて尋ねました、そしてもう一つの同じ質問がここにあります、そしてまだ誰も何をすべきかわかりません。

まず第一に、彼らはそれを6.0で修正しました、私は推測します、それは良いことです。

5.1では、デザインを少し変更し、モーダルビューを避けました。あなたの状況でそれが可能であるならば、それをしてください。

于 2012-09-26T20:11:30.233 に答える