仅键盘覆盖文本字段时将视图向上移动

我试图迅速为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(通知: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
    }
}

**

zhenggang5685 回答:仅键盘覆盖文本字段时将视图向上移动

我在开始在文本字段上进行编辑时执行了此功能以开始显示键盘:

   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)

}

但是在这里,它适用于我所拥有的所有文本字段,并且存在相同的问题。 如何针对特定的文本字段创建它?

本文链接:https://www.f2er.com/2903310.html

大家都在问