Swift 3 NSNotificationCenter Keyboardwillshow/hide

后端 未结 4 632
栀梦
栀梦 2020-12-06 17:27

I have a piece of code that worked in Swift 2 and I tried using Xcode to update the code to the newest version and I fixed everything except two issues.

I have this

相关标签:
4条回答
  • 2020-12-06 17:53

    Check out the updated Swift Programming Language book. Pages 1027 and 1028 are what you're looking for. It should be something like this:

    func keyboardWillHide(_ notification: NSNotification) {…
    

    Notice the additional underscore above. Also:

    #selector(LoginViewController.keyboardWillHide(_:))
    

    You also might need to add @objc(keyboardWillHideWithNotification:) to your class.

    0 讨论(0)
  • 2020-12-06 18:11

    NSNotificationCenter have things alter for get show keyboard:

    NotificationCenter.default.addObserver(self, selector: #selector(NovaVisitaVC.abreTeclado(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
    
    NotificationCenter.default.addObserver(self, selector: #selector(NovaVisitaVC.abreTeclado(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
    
    0 讨论(0)
  • 2020-12-06 18:14

    On Swift 4.2, addObserver name for NSNotificationCenter changed as well:

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardDidShowNotification, object: nil)
    
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardDidHideNotification, object: nil)
    
    0 讨论(0)
  • 2020-12-06 18:15

    Use that code that's work on swift3

    You can use your ViewController (e.g, loginvc) to add notification

    let loginvc : LoginVC = self.storyboard?.instantiateViewController(withIdentifier: "LoginVC") as! LoginVC
    
        NotificationCenter.default.addObserver(self,
            selector: #selector(loginvc.keyboardWillShow(notification:)),
            name: NSNotification.Name.UIKeyboardWillShow, object: nil)
        NotificationCenter.default.addObserver(self,
            selector: #selector(loginvc.keyboardWillHide(notification:)),
            name: NSNotification.Name.UIKeyboardWillHide, object: nil)
    

    Then add keyboard hide and show method

    func keyboardWillShow(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
            print("Show") 
        }
    }
    func keyboardWillHide(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
            print("Hide")
        }
    }
    
    0 讨论(0)
提交回复
热议问题