我已经开发了我的应用程序。当用户点击文本字段时,键盘弹出,包含消息的表格视图向上移动,但表格视图的顶部不可见,因为它不在屏幕上。当用户向上或向下移动键盘建议时,它还具有将屏幕变黑的不良效果
altitude
如何控制tableview,文本字段和键盘的显示?
修改
期望的行为。 从一开始
点击文字字段时
其他错误
答案 0 :(得分:0)
尝试使用键盘。
-viewDidLoad()
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
和
func dismissKeyboard(){
view.endEditing(true)
}
答案 1 :(得分:0)
我找到了解决方案,它对我有用。
请检查您的项目。 (Eendje的解决方案)
Resize the screen when keyboard appears
您可以创建表格视图底部自动布局约束的插座。
然后只需使用此代码:
func keyboardWillShow(sender: NSNotification) {
let info = sender.userInfo!
var keyboardSize = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue().height
bottomConstraint.constant = keyboardSize - bottomLayoutGuide.length
let duration: NSTimeInterval = (info[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
UIView.animateWithDuration(duration) { self.view.layoutIfNeeded() }
}
func keyboardWillHide(sender: NSNotification) {
let info = sender.userInfo!
let duration: NSTimeInterval = (info[UIKeyboardAnimationDurationUserInfoKey] as! NSNumber).doubleValue
bottomConstraint.constant = 0
UIView.animateWithDuration(duration) { self.view.layoutIfNeeded() }
}
如果您在创建底部约束时遇到问题:
在故事板中
选择搜索栏。 在右下角的角落,你会看到3个图标。点击中间的| - [] - |。 在弹出窗口的顶部,有4个框。在底部的一个输入0。 约束创建了! 现在,您可以将其拖动到视图控制器并将其添加为插座。
另一种解决方案是设置tableView.contentInset.bottom。但我以前没有这样做过。如果您愿意,我可以尝试解释一下。
使用插入:
func keyboardWillShow(sender: NSNotification) {
let info = sender.userInfo!
var keyboardSize = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue().height
tableView.contentInset.bottom = keyboardSize
}
func keyboardWillHide(sender: NSNotification) {
tableView.contentInset.bottom = 0
}
您可以尝试使用此代码设置插图。我自己还没试过,但它应该是那样的。
我使用约束解决方案解决了我的问题。