我正在处理当键盘覆盖刚获得第一响应者的元素时移动视图的问题。我开始看着this question,这给了我一个很好的开局。 加入观察员UIKeyboardWillShow
和UIKeyboardWillHide
我用下面的代码结束后:当键盘出现时管理UIView
func keyboardWillShow(notification: Notification) {
guard let userInfo = notification.userInfo,
let kbRect = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue,
let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? Double else {
return
}
let kbSize = kbRect.cgRectValue.size
UIView.animate(withDuration: duration) {
self.view.transform = CGAffineTransform(translationX: 0, y: -kbSize.height)
}
}
func keyboardWillHide(notification: Notification) {
UIView.animate(withDuration: 0.3) {
self.view.transform = CGAffineTransform(translationX: 0, y: 0)
}
}
,视图和上下移动它的工作原理在这个意义很好,当文本字段涨幅第一响应者。 但是,当按下某个键时,视图会再次移动,从而失去了将其向上移动的目的。 为了更好地描述这种不良行为,我做了一个小GIF,第一次键盘出现和消失显示正确的行为,第二次,当按下一个键时,显示不需要的行为。
所以,问题是,有没有办法可以防止性视图移动时按下某个键?我希望视图在用户使用键盘插入文本时保持“向上”。
你是如何设置这张图片的?那里有什么限制? –
@Lu_它发生在我的每一个视图上,那个图像我只是一个测试UIView我做的,以说明我遇到的问题。对图像的约束只是顶部,引导和追踪到超级查看,一个到底部的文本字段,所有的值都是8 –