Iphone 如何在滚动到下一页时自动播放声音?

Iphone 如何在滚动到下一页时自动播放声音?,iphone,objective-c,audio,Iphone,Objective C,Audio,我用的是苹果的。我想能够水平滚动到特定页面,并在查看该页面时自动播放声音?然后在查看其他页面时声音停止 比如说。在第一页,我有一些文字。当我转到第2页的下一页时,我希望声音在我转到第3页时自动播放并停止 我计划使用If语句,因为它没有那么多的页面来决定哪一页将获得声音 我的问题很简单。如何在查看特定页面时自动播放声音? 顺便说一下,我计划使用系统声音 我知道如何使用按钮播放声音。但是,如何自动获取它?当某个页面出现时启动,当移动到下一页时停止 提前谢谢你 编辑: 我在ViewDidLoad中输入

我用的是苹果的。我想能够水平滚动到特定页面,并在查看该页面时自动播放声音?然后在查看其他页面时声音停止

比如说。在第一页,我有一些文字。当我转到第2页的下一页时,我希望声音在我转到第3页时自动播放并停止

我计划使用If语句,因为它没有那么多的页面来决定哪一页将获得声音

我的问题很简单。如何在查看特定页面时自动播放声音? 顺便说一下,我计划使用系统声音

我知道如何使用按钮播放声音。但是,如何自动获取它?当某个页面出现时启动,当移动到下一页时停止

提前谢谢你

编辑:

我在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);
}
}

当您想要的ViewController视图显示在屏幕上时,为什么不能使声音消失?您可以通过页面控件示例中的scrollViewDidScroll方法和loadPage方法知道它何时在屏幕上显示。通过查看其中的方法,您应该能够确定何时需要播放声音,因为特定的视图已出现在屏幕上并播放。另一种方法是使用类似UISoundViewController的东西将UIViewController子类化,并让它在viewDidLoad上播放声音。

-viewDidLoad只在加载视图控制器的view属性时调用一次*。在这个方法中,您只添加被调用一次且仅调用一次的内容

播放声音显然不是一次性的。将它们放入-viewDidDisplay:


*:除非取消分配视图控制器。

我编辑了问题并输入了实际代码。我尝试在viewDidLoad下执行此操作,但声音在到达声音的预期页面之前播放得更早。我想知道为什么。您是否使用特定的视图控制器来显示该视图?如果对所有视图控制器使用相同的视图控制器,则会出现问题,请参见。不,我使用的是同一个视图控制器。有什么建议可以解决这个问题吗?最简单的方法是在控制器上添加一个shouldPlaySound布尔属性,然后在加载viewController时设置它…所以在这里,你必须再次确定哪个viewController在加载到scroll视图时是有声音的,你可以相应地设置该属性