ios - UIPageViewController 转换 'Unbalanced calls to begin/end appearance transitions for '

标签 ios transition uipageviewcontroller

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

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

最佳答案

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

在设置和调用pageViewController的view controller中, 声明:

@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;
    ...
}

通过拒绝提供 View Controller 信息来抑制手势:

- (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;
    ...
}

关于ios - UIPageViewController 转换 'Unbalanced calls to begin/end appearance transitions for ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13248282/

相关文章:

ios - 按下后退按钮时 PFQueryTable ViewController 重新加载表

ios - 创建一个没有 Nib 的 View Controller

ios - 服务器的引号 (") appears as "â"在 iOS 应用程序中

ios - 在 UISplitViewController 中重写 RootViewController.xib

javascript - 加载页面上的 CSS3 过渡

reactjs - 无法使用 graphQL 和 createPages 在 Gatsby 中进行转换

WPF 内容转换

Swift - 将 UIPageViewController 控件置于最前面

ios - 带框架的 UIPageViewController

ios - 在 UIPageViewController 中使用 UISlider