我有一个 View Controller
表格 View 和表格下方的textView
当我点击textView时,出现键盘,而当我点击textView之外时,键盘消失
效果很好,但是我有一个问题,当我拖动(向下滚动)表格 View 时,textView不会随着键盘向下移动,并且我看到键盘后面有黑色背景,如下图所示
如何在Swift中解决这个问题
更新:
这是我当前的代码,观察keyboardFrameChanges
func keyboardFrameChanged(notification: NSNotification) {
let dict = NSDictionary(dictionary: notification.userInfo!)
let keyboardValue = dict.objectForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue
let bottomDistance = mainScreenSize().height - keyboardValue.CGRectValue().origin.y
let duration = Double(dict.objectForKey(UIKeyboardAnimationDurationUserInfoKey) as! NSNumber)
UIView.animateWithDuration(duration, animations: {
self.inputViewConstraint!.constant = -bottomDistance
self.view.layoutIfNeeded()
}, completion: {
(value: Bool) in
self.chatTableView.scrollToBottom(animation: true)
})
}
更新2:
我通过将keyboardDismissMode从交互式更改为 OnDrag 找到了解决方案
chatTableView.keyboardDismissMode = UIScrollViewKeyboardDismissMode.OnDrag
一旦观察到表格中的任何拖动运动,这将立即将键盘和textView向下移动,但是如何在交互式模式下(如whatsapp聊天 View 中)进行操作
最佳答案
.interactive
设置为您的keyboardDismissMode
滚动 View canBecomeFirstResponder
并返回true
inputAccessoryView
并返回输入容器看看我的简单代码here on github
如果您对输入 View 实现自己的底部约束
并在键盘框架通知上更改其常数。使用这些代码行,动画末尾的预测条布局错误将得到修复。
override var inputAccessoryView: UIView? {
return UIView()
}
override var canBecomeFirstResponder: Bool {
return true
}