ios - 出现键盘时尝试移动 View - 一些错误

标签 ios swift uitextfield nsnotificationcenter uikeyboard

我试图将我的整个 View 向上移动,以便能够看到用户在文本字段中输入的内容。但是,它第一次完美地工作,正如我所希望的那样。但是,当单击键盘上的返回键(将其关闭),然后单击文本字段时,我将键盘稍微放在文本字段上方,并且没有得到与第一次相同的结果。这是为什么?

这是我的代码:

@IBOutlet weak var commentTextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    commentTextField.delegate = self

    //Keyboard listeners
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardDidHide, object: nil)
}

@objc func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
        if self.view.frame.origin.y == 0 {
            self.view.frame.origin.y -= keyboardSize.height
        }
    }
}

@objc func keyboardWillHide(notification: NSNotification) {
    if self.view.frame.origin.y != 0 {
        self.view.frame.origin.y = 0
    }
}

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

最佳答案

替换

UIKeyboardFrameBeginUserInfoKey

UIKeyboardFrameEndUserInfoKey

关于ios - 出现键盘时尝试移动 View - 一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54854872/

相关文章:

ios - 合并字典中数组的所有值

swift - 阿拉莫菲尔 "Invalid value around character 0."

IOS:文本字段和双值

ios - 在 Xcode 4.2 上,应用程序总是在调试器中暂停

ios - 有没有办法以声明方式获取 UITextField 的文本更新?

ios - 将 ViewController 嵌入到一个主视图 Controller 的多个 ContainerView 中

ios - 用于货币验证的 Objective C 正则表达式

ios - 当我使用 CocoaPods 时“没有这样的模块”

ios - 在 Swift 中根据触摸正确移动 Sprite

ios - 如何实现用于短信验证码的 UITextField 布局/设计?