5

次の設定のアプリがあります。

URMoviePlayerViewControllerはMPMoviePlayerViewControllerを拡張します

  • メソッドremoteControlReceivedWithEvent:(UIEvent *)eventが実装されており、次のようになっています。

    (void)viewDidLoad
    {
        [super viewDidLoad];    
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        [self becomeFirstResponder];
    }
    
    (BOOL) canBecomeFirstResponder
    {
        return YES;
    }
    

URPlayerViewControllerには、プロパティとしてURMoviePlayerViewControllerがあります

    @property (nonatomic, strong) URMoviePlayerViewController *player;
  • オーディオのクリップを再生するための呼び出しが行われると、プレーヤーが初期化されます。すでに初期化されている場合、プレーヤーは再初期化されません

  • URPlayerViewControllerには、再生/一時停止、次/前のコントロールが初期化され、viewDidLoadメソッドのサブビューに追加されるカスタムプレーヤーであるビューがあります。

URAppDelegateには、プロパティとしてURPlayerViewControllerがあります

    @property (nonatomic, strong) URPlayerViewController *playerViewController;
  • playerViewControllerはアプリケーションdidFinishLaunchingWithOptionsで初期化されます

  • playerViewControllerのビューがウィンドウに追加され、カスタムプレーヤーがアプリ全体に表示されるようになります

問題:

通常、すべてがうまく機能します。時々、ロック画面で再生コントロール(再生/一時停止/次/前)が機能しなくなります。remoteControlReceivedWithEventが呼び出されることはありません。私はこれを一貫して再現することができませんでした。

この問題を一貫して再現することはできないので、再生に関するこの問題のデバッグに関するアドバイスやアイデアは素晴らしいでしょう。ありがとう!

4

1 に答える 1

1

以下のメソッドが不足していると思います。既存のコードに追加して、機能する場合は回答を受け入れてください。

viewdidload から beginRecomingRemoteControlEvents を削除し、viewdidAppear に配置します。

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];

}

于 2012-11-19T11:52:58.240 に答える