tableView上使用textView遇到的问题

1,键盘弹出时, 键盘遮挡输入框问题

页面使用IQKeyboard可以解决

2, 输入的内容有多行时,TableView 会自动向上移动,使得 TextView 内容不被键盘遮挡。

注意: 若想 TextView自动向上移动 必须  设置 textView.scrollEnabled=NO; 便可以实现像label一样自适应高度

//这是在cell上的textView

//其中textViewHeight为textView的高度限制条件

- (void)textViewChanged{

    [[self.textView.rac_textSignal filter:^BOOL(NSString * _Nullable value) {

        returnvalue.length>0;

    }]subscribeNext:^(NSString*_Nullablex) {

        CGFloat height = [x getHeightWithWidth:(self.textWidth) font:QP_Font_16] ;

            self.textViewHeight.constant= height;

            [self.contentView updateConstraints];

            [self.contentView updateConstraintsIfNeeded];

            [self.contentView layoutIfNeeded];

            UITableView*tableView = [self tableView];

            if(@available(iOS11, *)){

                [UIView performWithoutAnimation:^{

                    [tableView performBatchUpdates:^{

                   }completion:^(BOOLfinished) {

                   }];

                }];

            }

            else{

                [tableView beginUpdates];

                [tableView endUpdates];

            }


        }

    }];

}

- (UITableView*)tableView {

    UIView*tableView =self.superview;

    while(![tableViewisKindOfClass:[UITableViewclass]] && tableView) {

        tableView = tableView.superview;

    }

    return(UITableView*)tableView;

}

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

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

解决方法:

iOS 10 中这样动态更新TextView高度:

[tableView beginUpdates];

 [tableView endUpdates];

iOS 11 中改为如下代码:

 [UIView performWithoutAnimation:^{

             [tableView performBatchUpdates:^{

            }completion:^(BOOLfinished) {

            }];

            [self.textView sizeToFit];

}];

4、tableView 滚动时,退下键盘

tableView.keyboardDismissMode = .onDrag;

参考链接: https://www.jianshu.com/p/f13ccd8b6294

你可能感兴趣的:(tableView上使用textView遇到的问题)