【发布时间】:2018-03-18 09:08:50
【问题描述】:
如果键盘与字段重叠并在键盘关闭后移回其原始位置,我正在尝试计算移动 UITextField 及其父 UIView 的位置。
我已经尝试过https://github.com/hackiftekhar/IQKeyboardManager,但它不适用于我的特殊情况。
为了解释问题,请参考随附的两张截图,一张是打开键盘时,另一张是关闭时。
如您所见,在键盘打开时,文本字段与键盘重叠,我想将文本字段与弹出视图一起移动以重新调整并坐在键盘上方。
这是我尝试过的。
func textFieldDidBeginEditing(_ textField: UITextField) {
self.startOriginY = self.frame.origin.y
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
}
@objc func keyboardWillShow(_ notification: Notification) {
if let keyboardFrame: NSValue = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue {
let keyboardRectangle = keyboardFrame.cgRectValue
let keyboardHeight = keyboardRectangle.height
let screenHeight = self.backgroundView.frame.height
let viewHeight = self.frame.height
let diffHeight = screenHeight - viewHeight - keyboardHeight
if diffHeight < 0 {
self.frame.origin.y = -self.textField.frame.height
}
}
}
func textFieldDidEndEditing(_ textField: UITextField) {
self.frame.origin.y = self.startOriginY
}
此代码将视图移动到不正确的位置。我试图弄清楚如何计算正确的位置来移动视图并移除键盘重叠。
解决这个问题的最佳方法是什么?
谢谢。
【问题讨论】: