2009-08-20 85 views
0

我正在使用Apple的Page Control example。我希望能夠水平滾動到某個頁面並在查看該頁面時自動播放聲音?然後在查看其他頁面時聲音停止?例如,如何在滾動到下一頁時自動播放聲音?

因此,例如。在第1頁上,我有一些文字。當我進入第2頁的下一頁時,我希望聲音能夠自動播放,並在第3頁時停止播放。

我打算使用If語句(因爲它不是很多頁面)確定哪個頁面會獲得聲音。

我的問題很簡單。如何在查看特定頁面時自動播放聲音?順便說一句,我打算使用System Sound。

我知道如何播放使用按鈕的聲音。但是,如何自動獲取 - 在出現某個頁面時啓動,並在移至下一頁時停止。

預先感謝您!

編輯:

我把這個代碼在viewDidLoad中,但播放的聲音在更早之前到達預期的頁面:

// 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

爲什麼你不能讓聲音熄滅,當你需要的viewControllers查看在屏幕上?你知道它何時從scrollViewDidScroll方法和loadPage方法(在Page Control示例中)出現在屏幕上。通過查看那裏的方法,您應該能夠識別何時需要播放聲音(因爲具體視圖已經出現在屏幕上)並播放它。另一種方法是使用類似UISoundViewController的類來繼承UIViewController,並讓它在viewDidLoad上播放聲音。

+0

我編輯了問題,並把我的實際代碼。我試圖在viewDidLoad下執行它,但是聲音在它到達聲音的預期頁面之前播放得更早。我想知道爲什麼。 – viper15 2009-08-20 17:50:36

+0

您是否使用該視圖的特定視圖控制器?如果你使用相同的視圖控制器爲所有他們然後theres問題 – Daniel 2009-08-20 18:07:28

+0

我看到。不,我正在使用相同的視圖控制器。任何建議如何解決這個問題? – viper15 2009-08-20 18:23:03

0

-viewDidLoad被調用一次,只有一次*當視圖控制器的view屬性被加載。您只能添加在此方法中僅調用一次的內容。

明確播放聲音不是一次又一次的事件。把這些放入-viewDidAppear:

*:除非視圖控制器被重新分配。