UIPageViewController 转换“对开始/结束外观转换的不平衡调用”

2024-01-22

当我浏览时UIPageViewController比我得到的过渡动画更快'Unbalanced calls to begin/end appearance transitions for <MyDataViewController>'并且直到我尝试翻页时才会显示两个横向视图之一。

有人有解决这个错误的想法吗?


上面的答案是正确的,但我认为比需要的更详细,并且食谱很有帮助。所以这似乎对我有用:

在设置并调用pageViewController的视图控制器中, 宣布:

@property (assign)              BOOL pageIsAnimating;

在 viewDidLoad 中:

    pageIsAnimating = NO;

添加这个:

- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers {
    pageIsAnimating = YES;
}

并添加几行:

- (void)pageViewController:(UIPageViewController *)pageViewController
    didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers
   transitionCompleted:(BOOL)completed {
    if (completed || finished)   // Turn is either finished or aborted
        pageIsAnimating = NO;
    ...
}

通过拒绝提供视图控制器信息来抑制手势:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
   viewControllerAfterViewController:(UIViewController *)viewController {
    if (pageIsAnimating)
        return nil;
    ...
    return after;
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
  viewControllerBeforeViewController:(UIViewController *)viewController {
    if (pageIsAnimating)
        return nil;
    ...
    return before;
}

哦,方向改变会重置标志:

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController
               spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation {
    pageIsAnimating = NO;
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIPageViewController 转换“对开始/结束外观转换的不平衡调用” 的相关文章

随机推荐