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和.alwaysBounceHorizontal的值,并查看是否有任何更改值,同时触发你的错误。当然,你希望所有人都成为“是”。
祝你好运,
达明
我看着在我的代码的属性。没有任何这些属性的参考(我用CMD + F找到..没有结果)。 – 2012-02-27 16:45:18
你可能没有引用它们,但是如果它们改变了,那可能是一个问题。放大怎么样 - 你放大了吗? – 2012-02-27 16:46:55
问题是,当我更改演示文稿时,为什么问题仍然存在?该视图应该被卸载并重新创建。 – 2012-02-27 16:51:48