【发布时间】:2019-12-17 21:05:07
【问题描述】:
我正在尝试为 iPhone 快速构建一个输入屏幕。屏幕有许多输入字段。其中大部分位于屏幕顶部,但三个字段位于底部。当用户试图编辑屏幕底部的文本时,键盘会弹出并覆盖屏幕。我找到了一个简单的解决方案,可以在发生这种情况时向上移动屏幕,但结果是屏幕总是向上移动,并且当用户尝试编辑这些字段时,屏幕顶部的字段会移到无法触及的地方。 例如:我想从 txt1 到 txt4 视图不上去。
有没有办法让屏幕只在底部字段被编辑时才移动?
我已经使用了我在这里找到的代码:
覆盖 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
}
}
**
【问题讨论】:
-
您不需要添加每个文本字段委托,您只需要在viewdidload中添加键盘通知中心,请阅读此podkeyboardManager
-
这能回答你的问题吗? Move view with keyboard using Swift
标签: ios swift iphone xcode ipad