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;