美文网首页小问题
iOS 11 TableViewCell 内嵌 TextView

iOS 11 TableViewCell 内嵌 TextView

作者: 冰霜海胆 | 来源:发表于2018-01-28 14:15 被阅读224次

    1、键盘遮挡问题

    在 iOS 10 中,当 TableViewCell 内嵌的 TextView 成为第一响应者弹出键盘后,输入的内容有多行时,TableView 会自动向上移动,使得 TextView 内容不被键盘遮挡。

    但在 iOS 11 中,这个特性消失了,多行内容在输入时会被键盘遮挡,TableView 也不会自动向上移动。

    解决方法:

     textView.textContainer.maximumNumberOfLines = 0
    
     func textViewDidChange(_ textView: UITextView) {
     
           if #available(iOS 11, *) {
               UIView.performWithoutAnimation {
                   tableView?.performBatchUpdates(nil, completion: nil)
                   textView.sizeToFit()
               }
           }
           else {
               tableView?.beginUpdates()
               tableView?.endUpdates()
          }
       }
    

    2、输入文字时,TableView 跳动的问题

    iOS 11 当 TableViewCell 内嵌的 TextView 成为第一响应者弹出键盘后,输入内容会出现 TableView 不停跳跃的问题。

    解决方法:
    iOS 10 中这样动态更新 TextView 高度:

    tableView?.beginUpdates()
    tableView?.endUpdates()
    

    iOS 11 中改为如下代码:

    UIView.performWithoutAnimation {
          tableView?.performBatchUpdates(nil, completion: nil)
          textView.sizeToFit()
    }
    

    3、tableView 滚动时,退下键盘

    tableView.keyboardDismissMode = .onDrag
    

    相关文章

      网友评论

        本文标题:iOS 11 TableViewCell 内嵌 TextView

        本文链接:https://www.haomeiwen.com/subject/iyoaaxtx.html