gpt4 book ai didi

ios - 简单地调用 UITextView `sizeThatFits:` 会导致滚动/输入行为出现故障吗?

转载 作者:可可西里 更新时间:2023-11-01 06:06:00 41 4
gpt4 key购买 nike

我发现在 iOS 8 中使用 UITextView sizeThatFits: 会导致出现故障的滚动行为。 TextView 不断滚动远离您正在键入的行。它似乎滚动到 View 的顶部,然后又返回。

如果重要, View 设置为 inputAccessoryView .

我将通过键盘输入:1 return 2 return 3 return 4

TextView 在我输入 4 之前的那一刻:

TextView right before the bug

在委托(delegate)方法中,我调用了 sizeThatFits:

- (void)textViewDidChange:(UITextView *)textView {
[textView sizeThatFits:CGSizeMake(100, 100)];
}

TextView 向上滚动到顶部。输入发生在 View 下方。抖动、故障的滚动移动到顶部,然后在您键入时返回到您的行。输入发生在键盘下方。非常烦人。

glitchy typing

如果我注释掉这一行:

//[textView sizeThatFits:CGSizeMake(100, 100)];

现在,当我输入 4 时,我们在最后一行的输入非常流畅:

no glitchy typing

UIScrollView sizeThatFits: 文档状态:

This method does not resize the receiver.

所以我很困惑为什么这会对文本字段的滚动/输入产生任何影响。

有什么办法可以避免这种滚动故障?

如何在不遇到此错误的情况下计算 TextView 的“适合高度”?

最佳答案

我遇到了完全相同的问题,我花了 5 个小时才解决这个讨厌的苹果错误,我希望我能给他们寄一张发票!我最终做的是创建原始 UItextView 的副本:

self.textViewCopy = [[UITextView alloc] initWithFrame:self.textView.frame];
[self.textViewCopy setFont:self.textView.font];

并且不要将其添加为 subview 。

然后改为在副本上调用 sizeThatFits(这将搞砸我们不关心的副本并为我们提供所需的信息):

[self.textViewCopy setText:self.textView.text];
CGSize size = [self.textViewCopy sizeThatFits:CGSizeMake(fixedWidth, CGFLOAT_MAX)];

关于ios - 简单地调用 UITextView `sizeThatFits:` 会导致滚动/输入行为出现故障吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30519940/

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