在addSubview或更改框架后,UIScrollView不需要的滚动

时间:2012-06-24 09:23:11

标签: ios uiscrollview uikit

我有一个UIScrollView填充了子视图,在创建它并最初填充它时一切都很顺利。

但是当我添加一个位于可见屏幕部分之外的新子视图时,或者当我只调整同样位于可见屏幕部分之外的现有子视图时,还会有一个0.3秒长的滚动动画(I可以看到它发生在我的委托中)似乎与新添加/调整大小的元素相匹配。

尝试:

  • pagingEnabled始终为NO。
  • 在子视图操作期间将scrollEnabled设置为NO无效。
  • 执行setContentOffset:animated:在子视图操作后不会阻止动画。
  • 包含所有子视图的单个巨型子视图无济于事。

我目前的解决方法是初始设置框架以适应可见屏幕部分,或者在另一个超级视图中调整工作大小,但它感觉很脏,并且不会处理所有情况......

有没有办法在以编程方式操作子视图时阻止此自动滚动动画?

Xcode 4.3,适用于5.1的iOS SDK。

2 个答案:

答案 0 :(得分:2)

我也发现了这个问题并找到了这个解决方案http://www.iphonedevsdk.com/forum/iphone-sdk-development/94288-disabling-uiscrollview-autoscroll.html

它涉及对UIScrollView进行子类化,并在以下方法中输入无代码。

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated  {

}

就像那个人在链接上说的那样,我发现它有效并且到目前为止没有任何问题。希望它适合你。

答案 1 :(得分:2)

我遇到了这个问题,因为我在添加子视图之前设置了滚动视图的内容大小。

只要我更改代码以便在添加子视图后设置滚动视图的内容大小,问题就会消失。