Хотите, чтобы звук не воспроизводился при просмотре нагрузки - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть пользователь, перемещающий объект, и когда перемещение закончится, он обновит отображение и воспроизведет звук.Все работает хорошо, но я не хочу, чтобы звук воспроизводился при первой загрузке представления.Как мне избежать этого?Нужно ли что-то поместить в 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];

}`

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

разделите метод updateTextDisplay на два метода

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

И не вызывайте playUpdateTextSound () при первой загрузке представления.И вызовите playUpdateTextSound () после вызова updateTextDisplay ()

1 голос
/ 29 февраля 2012

РЕДАКТИРОВАТЬ: перезагрузить весь вид или только UILabel?

Установите значение int, чтобы проверять, когда представление загружается впервые, сохранять значение в пользовательских значениях по умолчанию и обновлять значение при перезагрузке представления. Затем используйте дополнительное сравнение в своей логике if при воспроизведении звуков.

В поле зрения WillAppear

 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 integerForKey@"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 integerForKey@"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];
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...