-1

I'm trying to make the text field txtAdd swipe up when the keyboard shows up, but I'm not really sure how to do it.

This is the code for adding items to the list:

@IBAction func submitBntFunc(_ sender: Any) {
    if let text = txtAdd.text{
             if text == ""{
                 return
             }
             txtAdd.text = ""
             txtAdd.resignFirstResponder()
        return txtField.text.append("\(text) \n")

         }

}

I tried with the code below but it didn't really work.

guard let keyboardSize = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue else {return}
rick schott
  • 21,012
  • 5
  • 52
  • 81
Alison
  • 41
  • 1
  • 5

2 Answers2

0

try with this code

var originButton : CGFloat?

override func viewDidLoad()
{
     originButton = self.YOURBUTTON.frame.origin.y
     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(notification: NSNotification) {
    if let keyboard = ((notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue) {
        if self.view.frame.origin.y == 0 {
            self.YOURBUTTON.frame.origin.y -= keyboard.height

        }
    }
}

@objc func keyboardWillHide(notification: NSNotification) {
    if self.YOURBUTTON.frame.origin.y != originButton {
        self.YOURBUTTON.frame.origin.y = originButton!
    }
}
Andres Gomez
  • 458
  • 3
  • 12
0

add this Observer in your viewDidLoad methods:=

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

And it is call this function:=

    @objc func keyboard(notification: Notification){
    let userInfo = notification.userInfo!
    let keyboardScreenEndFrame = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
    let keyboardViewEndFrame = view.convert(keyboardScreenEndFrame, to: view.window)

    if notification.name == UIResponder.keyboardWillHideNotification{
        //add your constrain here when keyboard is hiden
        self.scrollView.contentInset = UIEdgeInsets.zero
    }else{
        //add your constrain here when keyboard is visible
        self.scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardViewEndFrame.height, right: 0)
    }
    scrollView.scrollIndicatorInsets = scrollView.contentInset
}
viral goti
  • 63
  • 10