2017-03-16 53 views
1

我有一個textView,我用它作爲chatMessages的輸入字段。如果文字多於一行,我希望它擴大。iOS Swift3 TextView在錯誤的位置行

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

我以編程方式設置高度約束,如果用戶在textView中輸入內容。

enter image description here < - 對於一個襯墊看起來很好。

enter image description here < - 按下輸入鍵後,它會被隱藏起來。

enter image description here < - 第二個輸入再次顯示它。

我在這裏做錯了什麼?我嘗試重新創建whatsapp/imessage的外觀,這種隱藏不會發生。

回答

2

這是因爲您正在更改錯誤委託函數的大小。編輯完成後調用代理textViewDidChange(resignFirstResponder被調用)。

你應該把你的代碼來改變高度在這個函數:

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

因此,這將改變UITextView的高度,你,你完成鍵入後鍵入沒有。

+0

這工作正常除了按回車,它仍然被隱藏。它看起來像一條線斷裂不被識別。你知道解決這個問題的方法嗎? –

+0

您可以嘗試放置一些邊距,例如'self.textViewHeight.constant = textView.contentSize.height + 10' –