检测是否在 UITableView 中拖动键盘以关闭



我目前在我的表视图上有这个设置。

tableView.keyboardDismissMode = .interactive

我有一个通知观察器设置,如下所示:

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)

当键盘最终向下拖动并离开屏幕时,将调用我的keyboardWillHide方法。有没有办法检测键盘是如何被关闭的?当调用keyBoardWillHide时,我需要知道是因为按下了回车键还是用户拖动了它,以便我可以调整动画。对此是否有任何形式的回调?

设置一个变量,如下所示:

var checker : Bool = false

设置键盘通知将隐藏:

override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil)        
    }

Return按键返回键盘:

 func textFieldShouldReturn(_ textField: UITextField) -> Bool {
            checker = true
            textField.resignFirstResponder()
            return true
        }

键盘将隐藏选择器呼叫:

func keyboardWillHide (notif: Notification)
{
    if (checker == true)
    {
        print ("Return key pressed")
    }
    else
    {
        print ("Table dragged down")
    }
    checker = false
}

希望这有帮助。

最新更新