Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 要在加载视图时阻止播放声音吗_Iphone_Ios_Xcode - Fatal编程技术网

Iphone 要在加载视图时阻止播放声音吗

Iphone 要在加载视图时阻止播放声音吗,iphone,ios,xcode,Iphone,Ios,Xcode,我让用户移动一个对象,当移动结束时,它将更新显示并播放声音。这一切都很好,但我不想在第一次加载视图时播放声音。我怎样才能避免这种情况发生?我需要在viewDidLoad中放入一些内容吗?下面是触发事件的代码。谢谢你的帮助。 ` //使用当前旋转角度更新文本字段并播放声音。 -(无效)updateTextDisplay { n错误*错误=nil; 如果(imageAngle>=0&&imageAngle 180&&imageAngle编辑:是重新加载整个视图还是仅重新加载UILabel 设置一个i

我让用户移动一个对象,当移动结束时,它将更新显示并播放声音。这一切都很好,但我不想在第一次加载视图时播放声音。我怎样才能避免这种情况发生?我需要在viewDidLoad中放入一些内容吗?下面是触发事件的代码。谢谢你的帮助。 `

//使用当前旋转角度更新文本字段并播放声音。
-(无效)updateTextDisplay
{
n错误*错误=nil;

如果(imageAngle>=0&&imageAngle 180&&imageAngle编辑:是重新加载整个视图还是仅重新加载UILabel

设置一个int值,以便在视图首次加载时检查,将该值存储在用户默认值中,并在视图重新加载时更新该值。然后在播放声音时在if逻辑中使用进一步的比较

在视图中将出现

 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];

将updateTextDisplay方法分为两个方法

- (void) updateTextDisplay;
- (void) playUpdateTextSound;
并且在第一次加载视图时不要调用playUpdateTextSound()。
并在调用updateTextDisplay()之后调用playUpdateTextSound()

当视图首次加载时,位置默认为12:00位置,标签显示该位置的文本,我想我也会先隐藏该位置,但声音文件也会播放,我不希望声音文件在用户第一次更改位置之前播放。对不起,我应该更具体一些。谢谢我要试一试。
- (void)applicationWillTerminate:(UIApplication *)application
{
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 [defaults setInteger:0 forKey:@"viewNumber"];  //this restores the value to 0 upon termination 
 [[NSUserDefaults standardUserDefaults]synchronize];
  }
- (void) updateTextDisplay;
- (void) playUpdateTextSound;