gpt4 book ai didi

ios - UIScrollView 在 setContentSize 后滚动

转载 作者:行者123 更新时间:2023-11-29 04:23:27 24 4
gpt4 key购买 nike

所以我想在 UIView(320,470) 中创建一些比 Viewport (320, 367) 高的细节内容。

我在 IB 中将其分开创建(见图)。一切看起来都很好,直到我设置 ContentSize 以使 UIScrollView 可滚动..

这是我放置在 ViewDidLoad

中的代码
CGRect frame = self.uiContent.frame;
[self.uiScrollView addSubview:self.uiContent];
[self.uiScrollView setContentSize:frame.size];

调用 setContentSize 后,内容会以动画方式滚动到中间。如何防止自动滚动?

enter image description here

最佳答案

我找到了罪魁祸首..它是UITextView。抱歉,如果我没有提到我在地址标签下使用 UITextView 作为多行标签。

在其他问题上引用“Taketo Sano”:https://stackoverflow.com/a/5673026/453407

I've investigated how the auto-scroll is done by tracking the call-trace, and found that an internal [UIFieldEditor scrollSelectionToVisible] is called when a letter is typed into the UITextField. This method seems to act on the UIScrollView of the nearest ancestor of the UITextField.

UITextView 文本更改时,

UIScrollView 会自动滚动到 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 之前禁用自动滚动,然后再启用它。

关于ios - UIScrollView 在 setContentSize 后滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12667644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com