我找到了罪魁祸首..它是UITextView
。对不起,如果我没有提到我在地址标签下使用 UITextView 作为多行标签。
在其他问题上引用“Taketo Sano”:https ://stackoverflow.com/a/5673026/453407
我通过跟踪调用跟踪调查了自动滚动是如何完成的,并发现当在 UITextField 中键入一个字母时会调用一个内部 [UIFieldEditor scrollSelectionToVisible]。此方法似乎作用于 UITextField 的最近祖先的 UIScrollView。
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 之前禁用自动滚动并在之后启用它。