2012-06-24 25 views
3

我有一个UIScrollView填充子视图,创建它并初始填充时,一切都很好。UIScrollView addSubview或更改框架后不需要的滚动

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

尝试:

  • pagingEnabled总是NO。
  • 在子视图操作期间将scrollEnabled设置为NO没有帮助。
  • 做一个setContentOffset:animated:在子视图操作后没有阻止动画。
  • 一个单一的巨人子视图与我所有的子视图都没有帮助。

我目前的解决方法是先设置为适合可见屏幕部分内,或做其他调整内上海华工作的框架,但感觉肮脏,而不会处理所有的情况......

有没有办法来防止这种自动滚动动画时,以编程方式操作子视图?

Xcode 4.3,iOS SDK for 5.1。

回答

2

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

它涉及到继承的UIScrollView,并在下面的方法进入无码。

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

} 

就像这个人在链接上说的,我发现它的工作,并没有问题到目前为止。希望对你有效。

+0

它的工作原理,谢谢!有趣的是,我看到那个页面,但是当我看到他们在谈论寻呼时停止了阅读,这在我的情况下不适用;应该继续阅读! :-P – squelart

+1

在该方法中设置断点,我看到以下调用堆栈:(我的子视图操作方法) - > UIView addSubview -...-> UITextView didMoveToSuperview - > UITextView webViewDidChange: - > UITextView scrollRectToVisibleInContainingScrollView - > NoAutoScrollUIScrollView scrollRectToVisible :动画:。所以它看起来像UITextView强制滚动它的UIScrollView容器。上述技巧可能会停止工作一天,如果苹果改变了这种方式,但它现在应该做的... – squelart

+0

@squelart说得好! –

2

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

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