在iOS Swift 4上查看键盘显示和隐藏时的响应性

3

这是我的视图。

enter image description here

当我在文本视图中单击时,键盘会出现在顶部。所以我添加了一个类,在该类中添加了这些函数。
    var objectObserver:UIViewController?

    func setKeyboardResponsiviness(observer:UIViewController){
            objectObserver = observer
            NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)

                NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
        }

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

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

在添加代码后,整个屏幕向上滑动,这是预期的目标,但是作为副作用,文本视图的一半超出了屏幕范围。有什么想法可以解决这个问题吗?

3
使用 IQKeyboardManager 库,你可以轻松实现这个功能。 - Jarvis The Avenger
2
您可以参考此Stack答案获取更多详细信息:https://stackoverflow.com/a/54288261/3278326 - Jarvis The Avenger
1
谢谢你,朋友。请把它作为答案发布,这样我就可以批准它了。 - Abdulmoiz Ahmer
1个回答

1
简单的解决方案是使用IQKeyboardManagerSwift。
pod 'IQKeyboardManagerSwift' // add this in your pod file.

在 didFinishLaunchingWithOptions 中添加以下代码。
IQKeyboardManager.shared.enable = true

我希望这可以帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接