Ios Xcode UIPageViewController-如何控制转换期间的行为?

Ios Xcode UIPageViewController-如何控制转换期间的行为?,ios,xcode,uipageviewcontroller,Ios,Xcode,Uipageviewcontroller,我一直在使用Xcode中的UIPageController模板创建一本交互式书籍 在这个应用程序中,每个页面加载后都会播放不同的音频文件 当我轻触页面的一个角落时效果非常好,第一页的音频停止,第二页的音频开始,没有明显的重叠 问题发生在我滑动手指拖动页面时。就像在iBoobe上一样,我可以在过渡中间保持页面,看到两个页面,但是这会导致两个页面的音频重叠。 最理想的情况是,我希望第一页的音频在转换开始时立即停止,第二页的音频在转换完成后立即开始,页面卷曲到屏幕的末尾,但这两个选项中的任何一个都会给

我一直在使用Xcode中的UIPageController模板创建一本交互式书籍

在这个应用程序中,每个页面加载后都会播放不同的音频文件

当我轻触页面的一个角落时效果非常好,第一页的音频停止,第二页的音频开始,没有明显的重叠

问题发生在我滑动手指拖动页面时。就像在iBoobe上一样,我可以在过渡中间保持页面,看到两个页面,但是这会导致两个页面的音频重叠。 最理想的情况是,我希望第一页的音频在转换开始时立即停止,第二页的音频在转换完成后立即开始,页面卷曲到屏幕的末尾,但这两个选项中的任何一个都会给我一个好的结果

问题是我找不到添加[audioFromPage停止]或[audioFromPage播放]的位置,因此没有重叠

我尝试将这些行添加到SetViewController:direction:animated:completion:method以及viewControllerAfterViewController和ViewControllerBeforReviewController方法中,但它们都不起作用


你们知道如何解决这个问题吗?

我的一个应用程序也遇到过类似的情况

若要仅在成功翻页后才启动音频,可以向UIPageViewControllerDelegate中的任何类添加一个可选方法:

-voidpageViewController:UIPageViewController*pageViewController未完成初始化:布尔完成上一个ViewController:NSArray*上一个ViewController转换完成:布尔完成

无论何时调用此方法,您都可以向当前[pageViewController.viewControllers objectAtIndex:0]发送一条消息以开始播放它的声音在我看来,您一次只显示一个页面,因此NSArray viewControllers将始终具有一个元素

同样,您也可以向[previousViewcontrollers objectAtIndex:0]发送类似消息,以停止播放其声音

这将在翻页完成时,而不是按照您的要求在开始时,将声音从一页切换到下一页,但pageViewcontroller didBeginAnimating没有类似的方法:


最安全的方法是定义一个包含audioFromPage停止和启动方法的协议,然后让书中的每一页都实现这个协议。这样,编译器将防止您意外创建未实现这些方法的页面,并避免运行时崩溃。

我的一个应用程序也遇到过类似情况

若要仅在成功翻页后才启动音频,可以向UIPageViewControllerDelegate中的任何类添加一个可选方法:

-voidpageViewController:UIPageViewController*pageViewController未完成初始化:布尔完成上一个ViewController:NSArray*上一个ViewController转换完成:布尔完成

无论何时调用此方法,您都可以向当前[pageViewController.viewControllers objectAtIndex:0]发送一条消息以开始播放它的声音在我看来,您一次只显示一个页面,因此NSArray viewControllers将始终具有一个元素

同样,您也可以向[previousViewcontrollers objectAtIndex:0]发送类似消息,以停止播放其声音

这将在翻页完成时,而不是按照您的要求在开始时,将声音从一页切换到下一页,但pageViewcontroller didBeginAnimating没有类似的方法:


最安全的方法是定义一个包含audioFromPage停止和启动方法的协议,然后让书中的每一页都实现这个协议。这样,编译器将防止您意外创建未实现这些方法的页面,并避免运行时崩溃。

有两种方法用于开始和完成页面转换:


-voidpageViewController:UIPageViewController*pageViewController将转换为ViewController:NSArray*PendingViewController


-voidpageViewController:UIPageViewController*pageViewController didFinishAnimating:BOOLfinished PreviousViewController:NSArray*PreviousViewController Transition Completed:BOOLcompleted有两种方法用于开始和结束页面转换:


-voidpageViewController:UIPageViewController*pageViewController将转换为ViewController:NSArray*PendingViewController


-voidpageViewController:UIPageViewController*pageViewController未完成初始化:BOOLfinished PreviousViewController:NSArray*PreviousViewController转换完成:BOOL
已完成

我刚刚想到,我可能能够添加一个手势观察者,并在水平滑动开始和停止时分别执行停止和播放操作。由于我是Xcode/Objective-C的新手,我花了很长时间才弄清楚是否有可能实现某件事,而且实际实现它需要更多的时间,所以我想我会问你们是否有可能,以及是否推荐它来解决这个问题。你们怎么想?我刚刚想到,我可能可以添加一个手势观察者,在水平滑动开始和停止时分别执行停止和播放动作。由于我是Xcode/Objective-C的新手,我花了很长时间才弄清楚是否有可能实现某件事,而且实际实现它需要更多的时间,所以我想我会问你们是否有可能,以及是否推荐它来解决这个问题。你们觉得怎么样?很有魅力!谢谢你的帮助!工作起来很有魅力!谢谢你的帮助-voidpageViewController:UIPageViewController*pageViewController将转换ViewController:NSArray*PendingViewController-----仅在IOS 6及更高版本中可用。-voidpageViewController:UIPageViewController*pageViewController将转换ViewController:NSArray*PendingViewController-----仅在IOS 6及更高版本中可用。