gpt4 book ai didi

ios - 调整 UITextView 的大小在新行的前 2 个字符上无法正常工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:34 25 4
gpt4 key购买 nike

我有一个名为 messageTextViewUITextView,它是我称为 messageFieldContainerUIView 的 subview 。

当用户在 UITextView 中输入更多字符时,我需要调整 UITextView 和容器 UIView 的大小。

这是我目前用来完成此任务的方法:

- (void)textViewDidChange:(UITextView *)textView
{
CGFloat fixedWidth = textView.frame.size.width;
CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, CGFLOAT_MAX)];
CGRect newFrame = textView.frame;
newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);

if (self.previousFrameSize.height && self.previousFrameSize.height != newFrame.size.height) {
self.messageFieldContainer.frame = CGRectMake(0, self.messageFieldContainer.frame.origin.y - 20, self.messageFieldContainer.bounds.size.width, newFrame.size.height + 20);

}

self.previousFrameSize = newFrame.size;
textView.frame = newFrame;
}

我使用 previousFrameSize 来跟踪不断变化的 UITextView 帧大小,如果帧大小发生变化,那么我会增加 messageFieldContainer 以适应增加的 TextView 框架大小。

这在大多数情况下都能完美地工作,除了两种情况:

  1. 换行,第一个字符

这是一个屏幕截图,显示了当新行开始并且您键入该行的第一个字符时 TextView 的样子:

enter image description here

  1. 换行,第二个字符

这是一个屏幕截图,显示了当新行开始并且您键入该行的第二个字符时 TextView 的样子:

enter image description here

这是您键入新行的第三个字符后 TextView 的屏幕截图。 100% 的时间应该是这样的:

enter image description here

我需要修复此逻辑,以便 TextView 始终看起来像第三个图像,即使您正在键入新行的第一个或第二个字符也是如此。

最佳答案

我在网上看到有好几个人遇到过这个问题。如果您有一个 scrollEnabled 属性为 false 的 UITextView,它会在换行符后自动扩展其高度仅在输入另一个字符后。 p>

要解决这个问题,请使用 UITextViewDelegatetextViewDidChange 方法来监听 TextView 文本的更改,并调用 sizeToFit()layoutIfNeeded()

示例

func textViewDidChange(textView: UITextView) {

textView.sizeToFit()
textView.layoutIfNeeded()

}

关于ios - 调整 UITextView 的大小在新行的前 2 个字符上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206753/

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