我正在尝试快速为 iPhone 构建一个输入屏幕。屏幕上有许多输入字段。其中大部分位于屏幕顶部,但三个字段位于底部。当用户尝试编辑屏幕底部的文本时,键盘将弹出并覆盖屏幕。我找到了一个简单的解决方案,可以在发生这种情况时向上移动屏幕,但结果是屏幕总是向上移动,并且当用户尝试编辑这些字段时,屏幕顶部的字段会移到够不到的地方。 例如:我想要从txt1到txt4, View 不会上升。
有没有办法让屏幕仅在编辑底部字段时移动?
我使用了在这里找到的代码:
override func viewDidLoad() {
txt1.delegate = self
txt2.delegate = self
txt3.delegate = self
txt4.delegate = self
txt5.delegate = self
txt6.delegate = self
txt7.delegate = self
txt8.delegate = self
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
}
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if view.frame.origin.y == 0 {
self.view.frame.origin.y -= keyboardSize.height
}
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if view.frame.origin.y != 0 {
self.view.frame.origin.y = 0
}
}
最佳答案
我执行此功能是为了在开始编辑文本字段时开始显示键盘:
public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool{
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
但这里它适用于我拥有的所有文本字段,并且存在同样的问题。 我怎样才能为特定的文本字段制作它?
关于ios - 当只有键盘覆盖文本字段时向上移动 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382051/