6

再生コントロールが表示または非表示になったときに通知を受け取ることができるかどうかを知りたいだけですか?

たとえば、次のスタイルのビデオを表示したいとします。

self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded;

ビデオの再生が開始されると、再生コントロールが表示され、自動的に消えます。ユーザーがビデオをタップすると、コントロールが表示されます。

ビューを調整できるように通知が必要です(MPMoviePlayerControllerビューの下にいくつかの追加ボタンを再配置します。それは可能ですか?残念ながら、ドキュメントには何も見つかりませんでした。

4

1 に答える 1

5

残念ながら、これらのイベントに関する文書化された通知はありません。

次の回答のように、投稿されたすべての通知を盗聴することで、幸運にも何かを見つけることができます。

すべての通知のトラップと追跡

UIWebView 埋め込み YouTube 動画再生から NSNotifications を受け取る方法


ただし、コントロールを のコントロールと単純にリンクする方法がありますMPMoviePlayerControler。その方法は明らかに文書化されておらず、iTunes でアプリを販売しようとすると拒否されるリスクが高くなります。

まず、 内にインターフェイス ビューを配置する必要がありますMPMoviePlayerController。これまではMPInlineVideoOverlay、組み込みインターフェイスを使用するときに呼び出されるクラスによって表されていました。繰り返しになりますが、Apple がいつの日か別の名前を使用することを決定する可能性があるため、これには大きな可能性または破綻が伴うことに注意してください。

/**
 * This quirky hack tried to locate the interface view within the supposingly opaque MPMoviePlayerController
 * view hierachy.
 * @note This has a fat chance of breaking and/or getting rejected by Apple
 *
 * @return interface view reference or nil if none was found
 */
- (UIView *)interfaceViewWithPlayer:(MPMoviePlayerController *)player
{
    for (UIView *views in [player.view subviews])
    {
        for (UIView *subViews in [views subviews])
        {
            for (UIView *controlView in [subViews subviews])
            {
                if ([controlView isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")])
                {
                    return controlView;
                }
            }
        }
    }
    return nil;
}

が適切なビューを返す場合は、それを使用してインターフェイスに独自の追加を追加するだけです。UIView addSubview: 一度それを行うと、コントロールはプレーヤーのインターフェイスの一部になり、それと一緒に表示および非表示になります (すべてのアニメーションなどにも準拠します)。 .)。

于 2012-07-19T17:04:50.400 に答える