ios - 根据键盘高度更新文本字段的约束

标签 ios swift keyboard constraints textfield

抱歉,如果这看起来不太好,但我是第一次尝试编程并且还在学习。 这是我的代码:

        func textFieldDidBeginEditing(_ textField: UITextField) {
    var heightOfKeyboard = CGFloat(0.0)
    UIView.animate(withDuration: 0.5) {

        func keyboardWillShow(_ notification: Notification) {
            if let keyboardFrame: NSValue = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue {
                let keyboardRectangle = keyboardFrame.cgRectValue
                let keyboardHeight = keyboardRectangle.height
                heightOfKeyboard = keyboardHeight
            }

        }
        print(heightOfKeyboard)
        self.heightConstraint.constant = heightOfKeyboard + CGFloat(50)
        self.view.layoutIfNeeded()
    }
}

在我的控制台输出中,我得到 heighOfKeyboard 仍然是 0.0,我认为这是因为方法 textFieldDidBeginEditing 在 keyboardWillShow 之前被触发。如何在触发 textFieldDidBeginEditing 之前让 heightOfKeyboard 获取 keyboardHeight 的值?

感谢您的回答!!

最佳答案

你可以把所有的东西都展示出来

func keyboardWillShow(_ notification: Notification) {

                if let keyboardFrame: NSValue = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue {
                let keyboardRectangle = keyboardFrame.cgRectValue
                let keyboardHeight = keyboardRectangle.height
                print(keyboardHeight )
                self.heightConstraint.constant = keyboardHeight + CGFloat(50)

                 UIView.animate(withDuration: 0.5) {            

                    self.view.layoutIfNeeded()
                }

            }

        }

关于ios - 根据键盘高度更新文本字段的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48952391/

相关文章:

javascript - javascript能区分左移键和右移键吗?

ios - 将服务器响应加载到 UICollectionView

ios - 如果应用程序依赖于仅应用程序的代码,您可以在应用程序及其扩展程序之间共享 .swift 文件吗

ios - Swift:在 iPhone 上启用 "dismiss keyboard"按钮?

ios - UILocalNotification 即使日期已过,也会继续触发

ios - 如何向已有的 Storyboard添加后退按钮和导航栏?

java - 禁用文本输入的 Android 键盘 [仅限表情符号键盘]

ios - HMAC-SHA1 Swift 3 - 403 禁止

swift - 如何使用 Range Swift 3 打印字符串

java - 软键盘关闭时执行操作