我花了最多的一天上SO試圖弄清楚這一點上移,這是我的問題:的UITextView不使用鍵盤
我有一個UIScrollView
與它內部的垂直堆疊視圖,內堆棧視圖我有幾個UIView
s包含不同的東西。在底部視圖中,我有一個UITextView
,當我開始輸入它時,理想情況下我喜歡向上移動,以便實際看到我正在輸入的內容。
實施方案中here,here,here,here,並在此主題的所有其他類似的現有問題的工作,如果我在最後一個視圖,而不是一個UITextView
一個UITextField
,但我真的想有返回鍵/多行功能似乎需要UITextView
。
下面是我在代碼方面(每幾個上面的鏈接):
func registerForKeyboardNotifications() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWasShown(_:)), name: .UIKeyboardDidShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillBeHidden(_:)), name: .UIKeyboardWillHide, object: nil)
}
func keyboardWasShown(_ notification: NSNotification) {
guard let info = notification.userInfo, let keyboardFrameValue = info[UIKeyboardFrameBeginUserInfoKey] as? NSValue else { return }
let keyboardFrame = keyboardFrameValue.cgRectValue
let keyboardSize = keyboardFrame.size
let contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height, 0.0)
scrollView.contentInset = contentInsets
scrollView.scrollIndicatorInsets = contentInsets
}
func keyboardWillBeHidden(_ notification: NSNotification) {
let contentInsets = UIEdgeInsets.zero
scrollView.contentInset = contentInsets
scrollView.scrollIndicatorInsets = contentInsets
}
我叫viewDidLoad()
registerForKeyboardNotifications()
,這是工作完美當我使用UITextField
,但對於該功能無法使用UITextView
。我能找到的最接近的SO問題是this one,但是這個問題從來沒有用涉及UITextView
的可行解決方案來回答。我已經看過幾個帖子提到IQKeyboardManager,但我最好喜歡在本地修復此問題。