2012-02-29 67 views
0

我有一個用戶移動一個對象,當移動結束時它將更新顯示並播放聲音。這一切都很好,但我不希望播放視圖時播放聲音。我如何避免這種情況發生?我需要在viewDidLoad中添加一些東西嗎?這是觸發事件的代碼。謝謝你的幫助。 `想要保持播放視圖時播放聲音

// Updates the text field with the current rotation angle and play sound. 
- (void) updateTextDisplay 
{ 
NSError *error = nil; 
if (imageAngle >=0 && imageAngle <=180){ 
    ComplimentPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"nice" ofType:@"m4a"]] error:&error]; 
    ComplimentPlayer.delegate = self; 
      textDisplay.text = [NSString stringWithFormat:@"blah blah blah"]; 
} else if (imageAngle >180 && imageAngle <=360){ 
    ComplimentPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] 
     pathForResource:@"good" ofType:@"m4a"]] error:&error]; 
    ComplimentPlayer.delegate = self; 
      textDisplay.text = [NSString stringWithFormat:@"blah blah"]; 
} 
NSTimeInterval playbackDelay = 0.5; 
[ComplimentPlayer playAtTime: ComplimentPlayer.deviceCurrentTime + playbackDelay]; 

} `

回答

1

獨立updateTextDisplay方法爲兩種方法

- (void) updateTextDisplay; 
- (void) playUpdateTextSound; 

別叫playUpdateTextSound()當視圖第一次加載。 並且在調用updateTextDisplay()後調用playUpdateTextSound()

+0

謝謝,我會給你一個鏡頭。 – mmoore410 2012-02-29 23:37:49

1

編輯:難道整個視圖重裝或只是的UILabel?

設置一個int值,以檢查視圖第一次加載時的值,將值存儲在用戶默認值中,並在視圖重新加載時更新值。然後在播放聲音時在if邏輯中進一步比較。

在viewWillAppear中

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];//Add this or make it an ivar 
int a = 0; 
int b = ++a; //set int to add 1 to itself 
[defaults setInteger:b forKey:@"viewNumber"]; 
[[NSUserDefaults standardUserDefaults]synchronize]; 



    - (void) updateTextDisplay 
    { 
NSError *error = nil; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; //Add this or make it an ivar 
if (imageAngle >=0 && imageAngle <=180 && [defaults [email protected]"viewNumber" >=2) //Add this here 
{ 
ComplimentPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:   [[NSBundle mainBundle] pathForResource:@"nice" ofType:@"m4a"]] error:&error]; 
ComplimentPlayer.delegate = self; 
     textDisplay.text = [NSString stringWithFormat:@"blah blah blah"]; 
    } else if (imageAngle >180 && imageAngle <=360 && [defaults [email protected]"viewNumber">=2) //Add this here 
{ 
ComplimentPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] 
    pathForResource:@"good" ofType:@"m4a"]] error:&error]; 
ComplimentPlayer.delegate = self; 
     textDisplay.text = [NSString stringWithFormat:@"blah blah"]; 
} 
NSTimeInterval playbackDelay = 0.5; 
    [ComplimentPlayer playAtTime: ComplimentPlayer.deviceCurrentTime + playbackDelay]; 

在AppDelegate中添加

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setInteger:0 forKey:@"viewNumber"]; //this restores the value to 0 upon termination 
[[NSUserDefaults standardUserDefaults]synchronize]; 
    } 
+0

當視圖第一次加載位置時,默認爲12:00位置,標籤顯示該位置的文本,我想我也會先隱藏,但聲音文件也會播放,我不希望聲音文件在用戶第一次更改位置之前播放。對不起,我應該更具體。謝謝。 – mmoore410 2012-02-29 23:36:47