我的视图有一个TextView,其中0行作为行数,填充了用户可以编辑的长文本。
当键盘显示时,要调整TextView的大小以使其适合屏幕的可见部分,屏幕底部空视图的高度约束等于键盘高度。
发生这种情况时,textView会自动向下滚动文本。我希望文本避免这种滚动,以便第一行始终保持可见。我尝试了几种方法,例如:
这是一张让它更清晰的图画(不能嵌入它,对不起):
相关代码:
func keyboardWillShow(_ notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
let duration: TimeInterval = (notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
emptyViewHeightConstraint.constant = keyboardSize.height
UIView.animate(withDuration: duration) { self.view.layoutIfNeeded() }
}
}
func keyboardWillHide(_ notification: NSNotification) {
let duration: TimeInterval = (notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
emptyViewHeightConstraint.constant = 0
UIView.animate(withDuration: duration) { self.view.layoutIfNeeded() }
}
PS:TextView实际上位于StackView内部,此StackView的底部约束在空视图的顶部。