Ios 使用硬件键盘时的UI问题

Ios 使用硬件键盘时的UI问题,ios,swift3,ios9,uikeyboard,Ios,Swift3,Ios9,Uikeyboard,在我的应用程序中,我有多个文本视图的表格视图,每当我点击一个文本视图时,它会自动滚动键盘空间,效果很好,现在的问题是,当我连接一个硬件键盘并点击一个文本视图时,它仍然会向上滚动键盘空间,所以当键盘在应用程序中打开时,会留下一个空白,通常会隐藏起来。当我连接外部键盘时,应用程序可以调用UIKeyboardWillShowNotification,但不能调用UIKeyboardWillHideNotification。有没有一个可以避免空白的空间? 下面是如何处理键盘通知的示例代码 func key

在我的应用程序中,我有多个文本视图的表格视图,每当我点击一个文本视图时,它会自动滚动键盘空间,效果很好,现在的问题是,当我连接一个硬件键盘并点击一个文本视图时,它仍然会向上滚动键盘空间,所以当键盘在应用程序中打开时,会留下一个空白,通常会隐藏起来。当我连接外部键盘时,应用程序可以调用
UIKeyboardWillShowNotification
,但不能调用
UIKeyboardWillHideNotification
。有没有一个可以避免空白的空间?

下面是如何处理键盘通知的示例代码

func keyboardWillShow(_ notification:Notification)
    {

        if myTextField.isFirstResponder {

            self.tableView.frame.size.height = view.frame.size.height

            if let userInfo = (notification as NSNotification).userInfo
            {
                if let keyboardRect = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
                {
                    mainScrollView.frame.size.height = view.frame.size.height - keyboardRect.size.height
                    tableViewTopConstraint.constant = keyboardRect.size.height-myView.submitViewHeightConstraint.constant
                }
            }
        }
        else{

            self.mainScrollView.frame.size.height = view.frame.size.height

            if let userInfo = (notification as NSNotification).userInfo
            {
                if let keyboardRect = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
                {
                   self.tableView.frame.size.height = view.frame.size.height + myView.frame.size.height - keyboardRect.size.height

                }
            }
        }
    }

    func keyboardWillHide(_ notification:Notification){
        tableViewTopConstraint.constant = 0.0
        tableView.frame.size.height = view.frame.size.height - myView.frame.size.height
        mainScrollView.frame.size.height = view.frame.size.height
        DispatchQueue.main.async(execute: {
            self.tableView.reloadData()
        })
    }

确保视图仅在屏幕上有实际键盘时调整的最直接方法是响应
ui键盘willchangeframe
通知。另一件事是,如果您实际在响应的通知中使用布局信息,则不应出现任何空格。您是否正在使用UIKeyboardFrameEndUserInfoKey?这将允许您避免在硬编码框架时出现任何空格。

是的,我使用的是UIKeyboardFrameEndUserInfoKey,我添加了我在应用程序中使用的键盘通知代码。