使用键盘移动按钮,Swift

Move button with Keyboard, Swift

@objc func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {

        if self.textView.frame.origin.y == 0 {
            let height = keyboardSize.height
            self.textButton.frame.origin.y -= height
            Log.debug("height: \(height)")
        }
    }
}

@objc func keyboardWillHide(notification: NSNotification) {
     if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {

    if self.textButton.frame.origin.y != 0 {
        let height = keyboardSize.height
        self.textButton.frame.origin.y += height
        Log.debug("height: \(height)")
    }
}
}

我用合适的观察者调用了这 2 个函数。 问题是键盘高度在第二次键盘显示后发生变化。这是发生了什么=>

这是我设置按钮的地方:

textButton.frame = CGRect(x: textView.frame.width - 95, y: textView.frame.height , width: 70, height: 70)

这是我从 ViewDidLoad() 调用的按钮函数

 @objc func crossButtonTapped(_ sender:UIButton) {
    self.textView.resignFirstResponder()
}

P.s。如果我希望键盘在单击按钮时显示并在第二次单击按钮时隐藏怎么办?

谢谢!

首先,如果你想添加将粘贴在键盘上方的按钮,我建议使用 "UIToolbar"。

关于你的 P.S 这很简单:

@objc func crossButtonTapped(_ sender:UIButton) {
    self.textView.isFirstResponder ? self.textView.resignFirstResponder() : 
    self.textView.becomeFirstResponder() 
}

希望对您有所帮助:)