iOS Swift3使用键盘移动文本字段和容器视图
我需要帮助使我的聊天视图控制器在打开和关闭键盘时的行为与Whatsapp相同。这意味着:如果打开键盘,视图将向上移动。如果关闭,它将返回到原始位置 我已经拥有的内容:我的聊天视图控制器有一个ContainerView,在该ContainerView下面是一个文本字段。我已经设置了两个观察员,他们正在捕获UIKeyboardWillShow和UIKeyboardWillHide。ContainerView和TextField在顶部、左侧、右侧和底部都有约束。它们之间是垂直间距 我所尝试的d:我接受了文本字段的底部约束,并将键盘的高度添加到其中。它动作正确 我需要帮助的地方:ContainerView中的TableView无法与文本字段一起正确移动。以下是一些显示我的问题的屏幕截图: 键盘似乎覆盖在ContainerView上。但ContainerView中的TableView似乎把它搞砸了 我希望单击文本字段时会显示“感谢您阅读示例消息”,但它会被剪切。我想每次你打开键盘时都会向下滚动到底部,但是如果你在聊天过程中想输入一些东西,你想呆在你所看到的地方,那就行不通了iOS Swift3使用键盘移动文本字段和容器视图,ios,uitableview,scroll,swift3,ios-autolayout,Ios,Uitableview,Scroll,Swift3,Ios Autolayout,我需要帮助使我的聊天视图控制器在打开和关闭键盘时的行为与Whatsapp相同。这意味着:如果打开键盘,视图将向上移动。如果关闭,它将返回到原始位置 我已经拥有的内容:我的聊天视图控制器有一个ContainerView,在该ContainerView下面是一个文本字段。我已经设置了两个观察员,他们正在捕获UIKeyboardWillShow和UIKeyboardWillHide。ContainerView和TextField在顶部、左侧、右侧和底部都有约束。它们之间是垂直间距 我所尝试的d:我接受
感谢您阅读本文,并感谢您的帮助 有两种方法可以实现您想要实现的目标:
override func viewDidLoad(){
NotificationCenter.default.addObserver(self, selector: #selector(keyboardHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardShow), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
}
func keyboardShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0)
}
}
func keyboardHide(notification: NSNotification) {
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
}
请注意,如果要将内容推到文本字段的底部,请将文本字段高度添加到键盘高度。这在iOS 10上效果很好,但在iOS 11 beta 6上效果不佳。使用
UIKeyboardFrameEndUserInfoKey
使其适用于两个版本。