UIPageViewController转换'不平衡调用开始/结束外观转换' [英] UIPageViewController transition 'Unbalanced calls to begin/end appearance transitions for '

查看:343
本文介绍了UIPageViewController转换'不平衡调用开始/结束外观转换'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我浏览 UIPageViewController 比其转换动画更快时,我得到'对< MyDataViewController> <的开始/结束外观转换的非平衡调用'并且直到我尝试翻页时才会显示横向中的两个视图之一。



任何人都有想法解决此错误?

解决方案

按照以下步骤解决:

1-声明一个标志,表示动画已完成与否:

  BOOL pageAnimationFinished; 

2-在viewDidLoad中将此标志设置为true:

  pageAnimationFinished = YES; 

3-禁用pageViewController的tapGesture并将'self'指定给panGestureRecognizer委托:



'pre> 为(UIGestureRecognizer * gesRecog在self.pageViewController.gestureRecognizers)
{
如果([gesRecog isKindOfClass:[UITapGestureRecognizer类] ])
gesRecog.enabled = NO;
else if([gesRecog isKindOfClass:[UIPanGestureRecognizer class]])
gesRecog.delegate = self;
}

4-通过以下手势识别器委托方法允许/禁止panGestureRecognizer:

   - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 
{
如果([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer类]&安培;及([gestureRecognizer.view isEqual:方法self.view] || [gestureRecognizer.view isEqual:方法self.pageViewController.view]))
{
UIPanGestureRecognizer *庞热=(UIPanGestureRecognizer * )gestureRecognizer;
if(!pageAnimationFinished ||(currentPage< minimumPage&& [panGes velocityInView:self.view] .x< 0)||(currentPage> maximumPage&& [panGes velocityInView:self。查看] .x> 0))
返回NO;
pageAnimationFinished = NO;
}
返回YES;
}

5-添加以下pageViewController委托方法:



'pre> - (无效)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)完成previousViewControllers:(NSArray的*)previousViewControllers transitionCompleted:(BOOL)完成了
{
pageAnimationFinished = YES;
}


When I navigate through UIPageViewController faster than its transition animation I am getting 'Unbalanced calls to begin/end appearance transitions for <MyDataViewController>' and one of the two views in landscape isn't shown until I try to turn the page.

Anybody has an idea to solve this bug?

解决方案

Solved following these steps:
1- Declare a flag to indicate that the animation has finished or not:

BOOL pageAnimationFinished;

2- Set this flag to true in viewDidLoad:

pageAnimationFinished = YES;

3- Disable tapGesture for the pageViewController and assign 'self' to panGestureRecognizer delegate:

for (UIGestureRecognizer * gesRecog in self.pageViewController.gestureRecognizers)
{
    if ([gesRecog isKindOfClass:[UITapGestureRecognizer class]])
        gesRecog.enabled = NO;
    else if ([gesRecog isKindOfClass:[UIPanGestureRecognizer class]])
        gesRecog.delegate = self;
}

4- Allow/Disallow panGestureRecognizer through the following gesture recognizer delegate method:

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && ([gestureRecognizer.view isEqual:self.view] || [gestureRecognizer.view isEqual:self.pageViewController.view]))
    {
        UIPanGestureRecognizer * panGes = (UIPanGestureRecognizer *)gestureRecognizer;
        if(!pageAnimationFinished || (currentPage < minimumPage && [panGes velocityInView:self.view].x < 0) || (currentPage > maximumPage && [panGes velocityInView:self.view].x > 0))
            return NO;
        pageAnimationFinished = NO;
    }
    return YES;
}

5- Add the following pageViewController delegate method:

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
    pageAnimationFinished = YES;
}

这篇关于UIPageViewController转换'不平衡调用开始/结束外观转换'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆