2011-08-16 17 views
1

私はオーバーレイビューを追加したいムービープレーヤビューコントローラを持っています。MPMoviePlauerViewController上のオーバーレイに関する問題

私は、次のコードを使用:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     [[moviePlayer view] addSubview:[self overlayControlsView]]; 

     UIGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
     [[self view] addGestureRecognizer:tap]; 
    } 
    return self; 
} 

overlayControlsViewは現在唯一のUILabelです。

ムービープレイヤーが表示されたばかりのとき、それをタップすると、overlayControlsViewが正常に表示されて非表示になります。

しかし、moviewplayerのロード状態が変更されて再生が開始された直後(インターネットからビデオを読み込むため、ここに時間差があります)、handleTapメソッドはもはや呼び出されませんでした。

誰もそれについて考えていますか?オーバーレイコントロールを追加するより良い方法はありますか?

答えて

1

あなたのコードに何が間違っているのか分かりません。ここでカスタムボタンを使用してオーバーレイコントロールを行う代わりの方法です

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSString *urlString = [[NSBundle mainBundle] pathForResource:@"sample-video" ofType:@"mov"]; 
    player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:urlString]]; 
    UIButton *overlayView = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [overlayView setTitle:@"" forState:UIControlStateNormal]; 
    [overlayView setTitle:@"Play" forState:UIControlStateSelected]; 
    [overlayView addTarget:self action:@selector(handleTap:) forControlEvents:UIControlEventTouchUpInside]; 
    player.view.frame = CGRectMake(50, 50, 200, 250); 
    overlayView.frame = player.view.frame; 
    [player.view addSubview:overlayView]; 
    player.controlStyle = MPMovieControlStyleNone; 
    [self.view addSubview:player.view]; 
    } 


- (void)handleTap:(id *)sender { 
    UIButton *btn = (UIButton *)sender; 
    if (btn.selected) { 
     [player play]; 
     [btn setSelected:NO]; 
    } 
    else { 
     [player pause]; 
     [btn setSelected:YES]; 
    } } 
+0

申し訳ありませんが、私は間違って説明することがあります。しかし、私がしたいのは、プレーヤをタップするときにオーバーレイビューを表示/非表示にすることです(デフォルトのコントロールを、カスタムオーバーレイビューで考えると、デフォルトのコントロールと一緒にフェードイン/アウトされます)。あなたの上にボタンがあり、クリックするとビデオが再生/一時停止されますが、これは私が望むものではありません。 – PeterWong

+0

@PeterWong、再生/一時停止はオーバレイコントロールを表示する単なる例でしたが、オーバーレイビューの表示/非表示にも同じものを使用できると思います...また、MPMoviePlayerControllerビューよりもUIGestureRecognizerを使用するのと同じ問題がありました。 。 – illuminatus

+0

これは、タップを待っているプレーヤー全体の目に見えないボタンです。それは素晴らしいようです。明日は試してみるよ。 – PeterWong

関連する問題