gpt4 book ai didi

swift - 想要在输入时更改 UITextview 高度

转载 作者:行者123 更新时间:2023-11-28 07:32:06 25 4
gpt4 key购买 nike

我希望如果用户添加文本并添加新行它应该增加高度并且如果用户删除 sometext 和一些行而不是它应该降低它的高度

为此我尝试了以下解决方案

func textViewDidChange(_ textView: UITextView) {
self.updateCharacterCount()
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(4),
execute: {
let pos = textView.endOfDocument
self.referenceOfClass?.textOfTextViewForTitle =
self.title_Name.text
let currentRect = textView.caretRect(for: pos ??
UITextPosition.init())

if (currentRect.origin.y == -1 || currentRect.origin.y ==
CGFloat.infinity){
if let val = self.indexPath{
self.referenceOfClass?.previousRectforTitle = currentRect
self.referenceOfClass?.inq_Tableview.reloadRows(at:
[val], with: .automatic)
}
}
else if currentRect.origin.y <
self.referenceOfClass?.previousRectforTitle.origin.y ?? 0.0 {
if let val = self.indexPath{
self.referenceOfClass?.previousRectforTitle = currentRect
self.referenceOfClass?.inq_Tableview.reloadRows(at:
[val], with: .automatic)
}
}
})
}

但它在这个 textView.caretRect(for: pos ?? UITextPosition.init()) 始终返回相同的值 (0,-1)

那我该如何解决呢?

我正在使用 xcode10.1,这个 textview 在 tableviewcell 中

最佳答案

你可以试试这个,取高度约束的导出和下面的代码

@IBOutlet weak var txtMessageHeightConstraint: NSLayoutConstraint!

extension GigMessageSocketViewController:UITextViewDelegate
{

func textViewDidChange(_ textView: UITextView)
{
isClickOnSendMessage = true
let contentSize = txtMessage.sizeThatFits(CGSize(width: txtMessage.bounds.size.width, height: CGFloat(Float.greatestFiniteMagnitude)))

if textView.contentSize.height < 100.0
{
txtMessageHeightConstraint.constant = CGFloat(ceilf(Float(contentSize.height)))
textView.layoutIfNeeded()
textView.updateConstraints()
textView.scrollRangeToVisible(textView.selectedRange)
}
}
}

关于swift - 想要在输入时更改 UITextview 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54416357/

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