2009-08-20 10 views
0

AppleからPage Control exampleを使用しています。特定のページを水平方向にスクロールして、そのページを表示しているときに自動的にサウンドが再生されるようにしたいですか?そして、他のページを見ると音が止まりますか?次のページにスクロールするときにサウンドを自動的に再生する方法は?

たとえば、 1ページ目には、いくつかのテキストがあります。 2ページ目の次のページに行くと、3ページ目に行くと自動的にサウンドが再生されて止まります。

If文を使用する予定です。サウンドを取得するページを決定します。

私の質問は簡単です。特定のページを表示しているときに、どのようにサウンドが自動的に再生されるのですか? ところで、私はSystem Soundを使うつもりです。

私はボタンを使って音を再生する方法を知っています。しかし、どのように自動的に取得するのですか?特定のページが表示されたら開始し、次のページに移動すると停止します。

ありがとうございます!

編集:

私はのviewDidLoadで、このコードに入れますが、それは意図したページに到達する前に音が早くで再生:ご希望のviewControllersを表示したときに

// Set the label and background color when the view has finished loading. 
- (void)viewDidLoad { 
    pageNumberLabel.text = [NSString stringWithFormat:@"Page %d", pageNumber + 1]; 
    self.view.backgroundColor = [MyViewController pageControlColorWithIndex:pageNumber]; 
    if (pageNumber == 3) { 
     NSString *path = [[NSBundle mainBundle] pathForResource:@"crunch" ofType:@"wav"]; 
     SystemSoundID soundID; 
     AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID); 
     AudioServicesPlaySystemSound(soundID); 
} 
} 

答えて

0

はなぜ音がオフに行くようカント画面に表示されますか? scrollViewDidScrollメソッドとloadPageメソッド(ページコントロールの例)から画面上に表示されるタイミングを知っています。その中のメソッドを見ることで、サウンドを再生する必要があるとき(特定のビューが画面に表示されているため)を識別して再生できるはずです。別のアプローチは、UISoundViewControllerのようなものでUIViewControllerをサブクラス化し、viewDidLoadでサウンドを再生することです。

+0

私は質問を編集し、私の実際のコードを入れました。私はviewDidLoadの下でそれをやろうとしましたが、サウンドが意図されたページに到達する前にサウンドが早く再生されます。なぜ私は不思議です。 – viper15

+0

そのビューに特定のView Controllerを使用していますか?あなたがそれらのすべてのために同じビューコントローラを使用している場合は、私は参照してください問題 – Daniel

+0

を参照してください。いいえ、私は同じView Controllerを使用しています。任意の提案どのようにこれを修正するには? – viper15

0

は、ビューコントローラのviewプロパティがロードされたときに1回だけ呼び出されます。このメソッドでは、一度だけ呼び出されたものだけを追加します。

音声をはっきりと再生することは、一度だけのイベントではありません。それらを-viewDidAppear:に入れてください。

*:ビューコントローラが割り当て解除されていない限り。

関連する問題