UIScrollView在没有任何原因的情况下失去“反弹”效果

UIScrollView在没有任何原因的情况下失去“反弹”效果

问题描述:

我为iPad创建了一个应用程序,它可以让您通过一些演示文稿导航...有两种视图:演示文稿列表和向您显示演示文稿的视图。 当用户选择一个演示文稿(在PresentationListController中)时,我在另一个视图(PresentationViewController)中显示演示文稿。 PresentationViewController包含一个带有页面列表的UIScrollView ...问题在于,在一段时间后,如果没有导致此问题的重复事件,UIScrollView会“失去”其反弹的能力......所以滚动不平滑,这就像滚动僵硬的看法,没有那种幻想的反弹效果......用户仍然能够滚动,但效果是非常丑陋。问题在于,即使我回到PresentationListController并选择一个新的PresentationViewController ...显示的新演示文稿,问题依然存在,但存在此问题。 我认为这是由于导航控制器将UIView保存在内存中,并且每当我打开一个新的演示文稿时都会重复使用它,但事实并非如此,因为我调试过并看到当我更改演示文稿时,会调用dealloc方法在PresentationViewController上。UIScrollView在没有任何原因的情况下失去“反弹”效果

那么,我该如何解决这个问题呢?

编辑

我发现如何重现它:我在做一个animiation打开的页面列表,以及一个动画将其关闭。当我打开包含大量页面的演示文稿(以便UIScrollView的contentSize> UIScrollView的宽度)时,我没有任何问题。但是,当我在仅有一页的演示文稿中打开和关闭页面列表时,问题就开始了。我写的代码我用来执行动画+

这里是我使用进行开启和关闭的页面列表中的动画代码:

- (IBAction)showPagesView:(id)sender { 
    if (pagesListVisible) { 
      [self resetNavigationControls]; 
     } else { 
      [self resetNavigationControls]; 
      scvPages.frame = CGRectMake(0, 960, 768, 0); 
      scvPages.alpha = 0.0f; 

      [btnPages setImage:[UIImage imageNamed:@"thumbON.png"] forState:UIControlStateNormal]; 

      [UIView animateWithDuration:0.7 animations:^{ 
       scvPages.frame = CGRectMake(0, 760, 768, 200); 
       scvPages.alpha = 1.0f; 
       pagesListVisible = YES; 
      } completion:^(BOOL finished) { 
       if (finished) { 
        scvPages.contentSize = scvPages_ContentSize; 
       } 
      }]; 
    } 

} 

下面是我用隐藏的方法网页列表(和其他意见)

- (void)resetNavigationControls { 
if (pagesListVisible) { 
     [btnPages setImage:[UIImage imageNamed:@"thumb.png"] forState:UIControlStateNormal]; 
     hidePages = YES; 
     // Nascondi la lista delle pagine. 
     [UIView animateWithDuration:0.7 
         animations:^ 
     { 
      scvPages.frame = CGRectMake(0, 960, 768, 0); 
      scvPages.alpha = 0.0f; 
     } 
      completion:^(BOOL finished) 
     { 
      if (finished) { 
       scvPages.contentSize = scvPages_ContentSize; 
       pagesListVisible = NO; 
      } 
     } 
     ]; 
    } 
} 

希望它有帮助。谢谢。

如果我必须打赌,它将在您的scrollview被缩放并且不会将仿射变换重置为身份。我不是这方面的专家,但那是我看的地方。

如果您的滚动视图根本没有缩放,那么我建议您从应用程序的开头记录scrollview.bounces,.bouncesZoom,.alwaysBounceVertical和.alwaysBounceHorizo​​ntal的值,并查看是否有任何更改值,同时触发你的错误。当然,你希望所有人都成为“是”。

祝你好运,

达明

+0

我看着在我的代码的属性。没有任何这些属性的参考(我用CMD + F找到..没有结果)。 – 2012-02-27 16:45:18

+0

你可能没有引用它们,但是如果它们改变了,那可能是一个问题。放大怎么样 - 你放大了吗? – 2012-02-27 16:46:55

+0

问题是,当我更改演示文稿时,为什么问题仍然存在?该视图应该被卸载并重新创建。 – 2012-02-27 16:51:48