iOS Swift3 TextView 行在错误的位置

Posted

技术标签:

【中文标题】iOS Swift3 TextView 行在错误的位置【英文标题】:iOS Swift3 TextView line at wrong position 【发布时间】:2017-03-16 02:12:26 【问题描述】:

我有一个 textView,用作 chatMessages 的输入字段。如果文本多于一行,我希望它展开。

func textViewDidChange(_ textView: UITextView) 
    self.textViewHeight.constant = textView.contentSize.height

如果用户在 textView 中输入内容,我会以编程方式设置高度限制。

我在这里做错了什么?我尝试重新创建 whatsapp / imessage 的外观,这种隐藏不会发生。

【问题讨论】:

【参考方案1】:

这是因为您在错误的委托函数中更改了大小。完成编辑后调用代理 textViewDidChange(调用 resignFirstResponder)。

你应该把你的代码改为在这个函数中改变高度:

optional func textView(_ textView: UITextView, 
    shouldChangeTextIn range: NSRange, 
       replacementText text: String) -> Bool

所以这将在您输入时更改UITextView 的高度,而不是在您完成输入后。

【讨论】:

这工作正常,除了按回车,它仍然被隐藏。似乎无法识别一根断线。你也知道解决这个问题的方法吗? 你能试试像self.textViewHeight.constant = textView.contentSize.height + 10这样的边距

以上是关于iOS Swift3 TextView 行在错误的位置的主要内容,如果未能解决你的问题,请参考以下文章

Ios Swift3:lazy var fetchrequestcontroller 显示错误

在 iOS 中,带有属性文本的 textview 的高度有时是错误的

iOS 键盘和 textview 错误 - “使用未声明的变量”

如何在 Swift 3 中将 NSConstraints 添加到 UITextView

XCUIApplication 仅适用于 iOS 9.0 或更新版本,swift3

iOS 应用在导航期间迁移到 swift3 后崩溃