带有键盘的移动按钮,Swift

问题描述 投票:0回答:1
@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个函数。问题是第二个键盘显示后键盘的高度发生了变化。这就是发生的事情=>

  • 键盘显示=>高度346
  • 键盘隐藏=>高度346
  • 键盘显示=>高度243
  • 键盘隐藏=>高度346
  • 键盘显示=>高度243

这是我设置按钮的位置:

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。如果我希望键盘在单击按钮时显示,而在单击第二个按钮时隐藏,该怎么办?

谢谢!

swift user-interface uiviewcontroller keyboard uibutton
1个回答
0
投票

首先,如果要添加粘贴在键盘上方的按钮,我建议使用“ UIToolbar”。

关于您的PS非常简单:

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

希望有帮助:)

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