我正在尝试在swift中为iPhone构建一个输入屏幕,屏幕有多个输入字段,大部分在屏幕顶部,但有三个字段在底部,当用户试图编辑屏幕底部的文本时,键盘会弹出,它会覆盖屏幕,我发现了一个简单的解决方案,当这种情况发生时,将屏幕向上移动但是结果是屏幕总是向上移动,并且当用户试图编辑屏幕顶部的字段时,屏幕顶部的字段移动到无法触及的位置。例如:我想从txt1到txt4视图不会上升。
有没有一种方法可以让屏幕只在编辑底部字段时移动?
我使用了我在这里找到的代码:
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
}
}
1条答案
按热度按时间unhi4e5o1#
我做了这个函数来启动显示键盘,同时我开始编辑文本字段:
但在这里,它的所有的文本字段,我有和它的相同的问题。我如何才能使它为特定的文本字段?