UIScrollView 在 setContentSize 之后滚动
Posted
技术标签:
【中文标题】UIScrollView 在 setContentSize 之后滚动【英文标题】:UIScrollView scrolled after setContentSize 【发布时间】:2012-10-01 04:48:02 【问题描述】:所以我想在 UIView(320,470) 中创建一些比 Viewport (320, 367) 高的细节内容。
我创建它像 IB 一样(见图)。在我 setContentSize 使 UIScrollView 可滚动之前,一切看起来都很好。
这是我放在ViewDidLoad
的代码
CGRect frame = self.uiContent.frame;
[self.uiScrollView addSubview:self.uiContent];
[self.uiScrollView setContentSize:frame.size];
在调用 setContentSize 后,内容会随着动画滚动到中间。如何防止自动滚动?
【问题讨论】:
不知道,但你可以尝试 [uiScrollView scrollsToTop] 之后 你在setContentSize之后有没有试过addSubview,是一样的还是不一样的?? 我已经尝试过了...scrollsToTop,更改顺序并同时执行...没有运气... setContentOffset 和 scrollRectToVisible 呢?? 仍然没有运气...我认为setContentSize
调用了导致ScrollView 滚动的东西。但是如果我添加简单的UIView
和颜色,它不会滚动......奇怪的事情......
【参考方案1】:
我找到了罪魁祸首。它是UITextView
。对不起,如果我没有提到我在地址标签下使用 UITextView 作为多行标签。
在其他问题上引用“Taketo Sano”:https://***.com/a/5673026/453407
我已经通过跟踪 调用跟踪,并发现一个内部 [UIFieldEditor scrollSelectionToVisible] 在输入字母时调用 UITextField。这个方法似乎作用于 UIScrollView 的 UITextField 的最近祖先。
UIScrollView
会在 UITextView
文本更改时自动滚动到 UITextView
。所以我通过子类化UIScrollview
并覆盖找到了解决方案
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
并且不返回任何内容以禁用自动滚动...如果您打算将来使用它,只需使用 bool 变量来启用/禁用它
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
if (!self.disableAutoScroll)
[super scrollRectToVisible:rect animated:animated];
因此您可以在通过代码更改 UITextView 之前禁用自动滚动并在之后启用它。
【讨论】:
以上是关于UIScrollView 在 setContentSize 之后滚动的主要内容,如果未能解决你的问题,请参考以下文章
升级到 Jetpack Compose Alpha 12 会导致 setContent 出现错误
Ueditor百度编辑器中的 setContent()方法的使用
QT 使用QDomDocument::setContent()读XML文件总是返回false
Gui系统之View体系---View的setContent
Android jetpack compose NoSuchMethodError: No static method setContent