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

标签 swift

我希望如果用户添加文本并添加新行它应该增加高度并且如果用户删除 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/

相关文章:

json - TableView 中带有 JSON 对象的搜索栏 - Swift

HTTP 后登录失败

ios - 如何在椭圆形或圆形上裁剪 UIImage?

ios - 下载 header 为 "Authorization"的文件时出现 400 错误

swift - 在 Swift 的 Switch 外部解包枚举元组

ios - 如何将图像从解析到 UIImage 加载到 UITableViewCell Swift

ios - 如何防止自定义 Mapbox 标注在 map View 上缩放或平移时自动隐藏

ios - Firebase 存储图像缓存不更新 SWIFT

swift - 找不到框架错误

arrays - 解决这个完成 block