首页 > 解决方案 > iPad 中的键盘和移动模式

问题描述

我在formSheet(或pageSheet自 iOS 13 起)中遇到了 iPad、键盘和模式的问题。

我正在开发一个聊天,我有一个输入栏,当它出现时,我想将它移到键盘上方,比如 WhatsApp 和类似的。

这是我的代码的简化版本,在接收后调用UIResponder.keyboardDidShowNotification,是keyboardFrame键盘的结束框架:

    func keyboardDidShow(withFrame keyboardFrame: CGRect, notification: Notification) {
        let viewFrame: CGRect
        if #available(iOS 11.0, *) {
            viewFrame = view.safeAreaLayoutGuide.layoutFrame
        } else {
            viewFrame = view.frame
        }

        let convertedKeyboardFrame = view.convert(keyboardFrame, from: nil)
        let intersection = viewFrame.intersection(convertedKeyboardFrame)

        updateBottomConstraint( // The bottom constraint of the input bar
            constant: -intersection.height,
            animationDuration: notification.keyboardAnimationDuration
        )
    }

它适用于所有屏幕尺寸、版本和设备,但带有formSheetpageSheet演示文稿的 iPad 在我的输入栏底部和键盘顶部之间有一个空白区域。

漏洞

在这种情况下,我的视图控制器向上移动了一点,以便为键盘腾出空间,从而破坏了我的代码。

我不想计算或了解窗口或超级视图,我想依赖布局指南或视图控制器范围内的任何内容。我找不到与此相关的任何信息,我认为这并不奇怪。

任何想法?

标签: iosipadkeyboard

解决方案


推荐阅读