我有一个 View Controller
表格 View 和表格下方的textView

当我点击textView时,出现键盘,而当我点击textView之外时,键盘消失
效果很好,但是我有一个问题,当我拖动(向下滚动)表格 View 时,textView不会随着键盘向下移动,并且我看到键盘后面有黑色背景,如下图所示

ios - 滚动表格时如何在键盘上方移动inputView-LMLPHP

如何在Swift中解决这个问题

更新:
这是我当前的代码,观察keyboardFrameChanges

func keyboardFrameChanged(notification: NSNotification) {

    let dict = NSDictionary(dictionary: notification.userInfo!)
    let keyboardValue = dict.objectForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue
    let bottomDistance = mainScreenSize().height - keyboardValue.CGRectValue().origin.y
     let duration = Double(dict.objectForKey(UIKeyboardAnimationDurationUserInfoKey) as! NSNumber)

    UIView.animateWithDuration(duration, animations: {
        self.inputViewConstraint!.constant = -bottomDistance
        self.view.layoutIfNeeded()
        }, completion: {
            (value: Bool) in
            self.chatTableView.scrollToBottom(animation: true)
    })

}

更新2:
我通过将keyboardDismissMode从交互式更改为 OnDrag 找到了解决方案
chatTableView.keyboardDismissMode = UIScrollViewKeyboardDismissMode.OnDrag

一旦观察到表格中的任何拖动运动,这将立即将键盘和textView向下移动,但是如何在交互式模式下(如whatsapp聊天 View 中)进行操作

最佳答案

  • 设置与UIViewController框架相等的滚动 View (UITableView或UICollectionView)框架
  • .interactive设置为您的keyboardDismissMode滚动 View
  • 覆盖canBecomeFirstResponder并返回true
  • 设置输入容器,屏幕底部带有UITextField或UITextView
  • 覆盖inputAccessoryView并返回输入容器
  • 享受

  • 看看我的简单代码here on github

    如果您对输入 View 实现自己的底部约束

    并在键盘框架通知上更改其常数。使用这些代码行,动画末尾的预测条布局错误将得到修复。
    override var inputAccessoryView: UIView? {
        return UIView()
    }
    
    override var canBecomeFirstResponder: Bool {
        return true
    }
    

    10-07 19:49
    查看更多