我正在使用 iBook 之类的翻页转换 (UIPageViewControllerTransitionStylePageCurl) 来导航几个 UIViewController 页面。
因此我实现了 UIPageViewControllerDataSource 委托(delegate)函数
- (UIViewController *)pageViewController:
(UIPageViewController *)pageViewController viewControllerAfterViewControllerUIViewController *)viewController
{
和
- (UIViewController *)pageViewController:
(UIPageViewController *)pageViewController viewControllerBeforeViewController:
(UIViewController *)viewController
当通过手势进行翻页时,这些会被正确调用。到目前为止,一切顺利。
除了这个默认行为之外,我还想在页面的两侧添加一个长按手势识别器,作为快速移动到最后一页或第一页的快捷方式。我已经设法将手势识别器添加到页面,但我不知道如何在没有内置滑动的情况下使页面移动。
如何以编程方式触发翻页到特定页面 (UIViewController)?
Best Answer-推荐答案 strong>
当用户执行长滑动时,您可以将所需的 viewController(在您的情况下为第一页或最后一页)发送到方法的 viewControllers 参数:
- (void) setViewControllersNSArray*)viewControllers
directionUIPageViewControllerNavigationDirection)direction
animatedBOOL)animated
completionvoid (^)(BOOL finished))completion;
有关更多详细信息,请参阅 Graham 的回答:
Is it possible to Turn page programmatically in UIPageViewController?
如果我没看错的话,正在显示的 UIViewController 包含按钮,并且您希望它们也能够调用此函数。
要从正在显示的 UIViewController 中以编程方式调用该方法,您可以使 UIPageViewController 成为正在显示的 UIViewController 的委托(delegate),然后在按下按钮时调用委托(delegate)方法。
一个不好的方法是向 UIViewControllers 发送一个反向指针(存储为 WEAK 属性!)到你的 UIPageViewController 并调用 respondsToSelector: 。
关于objective-c - 如何在没有手势的情况下以编程方式触发翻页转换?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/10790956/
|