Swift View上移不是我单击下一个文本字段时所期望的

问题描述 投票:0回答:1

[当我按下PassTextField文本字段时,视图按预期方式上升(self.view.frame.origin.y-= 100),然后我按下IDTextField,该视图上升,而我不是预期的(它不是self.view.frame.origin.y-= 100)。它不应该上升。

Error Image - 1 : Press PassTextField at first

Error Image - 2 : Press IDTextField after press PassTextField

Class LoginViewController:UIViewController,UITextFieldDelegate {

@IBOutlet weak var IDTextField: UITextField!
@IBOutlet weak var PassTextField: UITextField!

var ActivateTextfield : UITextField!

func textFieldDidBeginEditing(_ textField: UITextField) {

    ActivateTextfield = textField

}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){
         self.view.endEditing(true)
   }

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    ActivateTextfield.resignFirstResponder()

 return true
}

override func viewDidLoad() {
    super.viewDidLoad()
    addKeyboardNotification()
    IDTextField.delegate = self
    PassTextField.delegate = self
}

}

扩展名LoginViewController {

func addKeyboardNotification() {

    NotificationCenter.default.addObserver(self, selector: #selector(KeyBoardwillShow), name: UIResponder.keyboardWillShowNotification, object: nil)

     NotificationCenter.default.addObserver(self, selector: #selector(KeyBoardwillHide), name: UIResponder.keyboardWillHideNotification, object: nil)

}


@objc func KeyBoardwillShow(_ noti : Notification ){

    if let keyboardframe = noti.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {

        let height = keyboardframe.cgRectValue.height

        if self.view.frame.origin.y >= 0 {

          self.view.frame.origin.y -= 100

    }

    }

}

@objc func KeyBoardwillHide(_ noti : Notification ){

    self.view.frame.origin.y = 0
}

}

swift keyboard hide
1个回答
0
投票
if self.view.frame.origin.y >= 0 {

          let keyBoardHeight = (note.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.height
          let keyboardDuration = (note.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? NSNumber)?.doubleValue ?? 0
          self.view.frame.origin.y  = -(keyBoardHeight!+3)
             UIView.animate(withDuration: keyboardDuration) {
               self.view.layoutIfNeeded()
             }

 }
© www.soinside.com 2019 - 2024. All rights reserved.