UIScrollView滚动不正确

问题描述:

我有一个UIViewController子类,其视图属性设置为UIScrollView子类(比如ProfileScrollView)。现在,我已经重写了drawRect:方法,在该方法中绘制大量文本并将UIButton作为子视图放置在文本之间。根据文本数据,我在这个drawRect:方法中设置scrollView的contentSize。现在,当我滚动此视图时,按钮正在滚动,但文本仍停滞不前。请帮助解决这个问题。谢谢UIScrollView滚动不正确

我认为你的问题来自于你使用drawRect:作为你的文本。我非常确定CGRect参数给出的定位是绝对的,并且不依赖于scrollView的内容的当前偏移量。

您是否直接在UIScrollView中添加子视图(按钮和文本)?如果你这样做,尝试在UIScrollView中插入一个简单的UIView,它将包含所有子视图。应该是这样的:

​​

所以drawInRect:将绘制文本中包含的UIView具有绝对地位,UIScrollView的将UIView的(因此它的所有内容)滚动。

+0

感谢您的回答。我认为,这是必需的解决方案。但为什么它不滚动文本,因为我已经覆盖scrollRect:的scrollView? – Nishit 2010-07-10 13:13:03

+0

你有没有尝试过,并且有效地工作?因为在发布我的答案后我有些疑惑。但我猜想原因是你使用NSString的drawInRect或drawAtPoint绘制文本,将文本置于绝对位置。 UIButton(和其他UIViews)相对于它们的超级视图放置,所以UIScrollView可以根据用户滚动的位置改变其定位。 – Jukurrpa 2010-07-10 20:49:29

+0

是的,你的解决方案工作。但是,关于我之前的方法,我在drawRect中放置了一个断点:当我滚动scrollView时,drawRect:未被调用。所以这意味着它不是一次又一次地在相同的绝对点绘制字符串,而是在一个常量视图(而不是scrollView)中绘制它。 – Nishit 2010-07-11 15:51:05