美文网首页代码片段iOS开发iOS高阶UI相关
iOS 使用UITextView计算高度,一行代码搞定

iOS 使用UITextView计算高度,一行代码搞定

作者: 为之则易ing | 来源:发表于2017-03-26 15:54 被阅读960次

看其它文章介绍的方法很多,一般都是计算高度,问题太多。其实没那么麻烦。
一行代码的事;
直接上代码:

-(void)textViewDidChange:(UITextView *)textView{

    float textViewHeight =  [textView sizeThatFits:CGSizeMake(textView.frame.size.width, MAXFLOAT)].height;
    CGRect frame = textView.frame;
    frame.size.height = textViewHeight;
    textView.frame = frame;
}

是不是很简单!!!

当textView高度改变时,textview文字位置显示错误,错位显示,位置偏上

Paste_Image.png

解决办法:

textView.scrollEnabled = NO;

当textView放在tableViewCell上,当textView高度改变时需要刷新tableView,

-(void)textViewDidChange:(UITextView *)textView{
    float textViewHeight =  [textView sizeThatFits:CGSizeMake(textView.frame.size.width, MAXFLOAT)].height;
    if (textViewHeight != _cellHeight && textViewHeight > 50) {
        _cellHeight = textViewHeight;
        [_tableView reloadData];
    }
}

此时存在一个问题,键盘会隐藏,解决方法:在tableView代理中重新设为第一响应

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    TestTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TestTableViewCell"];
    cell.textV.delegate = self;
    cell.textV.scrollEnabled = NO;
    cell.textVH.constant = _cellHeight;
    dispatch_async(dispatch_get_main_queue(), ^{//这行代码一定要加上
        [cell.textV becomeFirstResponder];
    });
    return cell;
}

相关文章

网友评论

  • 8659b2865680:楼主,你有在实际项目中用过这个么?如果有,能否提供一个小demo,以供兄弟们参考呢
    8659b2865680:@iOS开发Go 好的,感谢,不过你的demo中,如果有多个cell中都包含UITextView时,会有问题哦
    为之则易ing:https://github.com/GitHubXuLiying/TextViewAutoFrame
  • nadou23:你好 大神 想问一下当有多个textView的时候,刷新表格第一响应者就会是最后一个了 这怎样控制让它是当前的
    nadou23:嗯嗯 我看看
    为之则易ing:应该是复用问题,设置相应的cell成为第一响应者。
  • 米匠:感谢!之前我还在想,刷新行高,不就失去焦点了吗,我就没采取tableview的方式。现在看来是没问题的,那我也这么做,哈哈哈
  • 柴羊羊:你说的也不是没有道理,回去试一下,但是这样的逻辑确实不严谨
  • c5c8cbc32df6:如果你有多个cell的话就滚动的时候每个cell中的textview都会成为第一响应者,这样就不合理了
    为之则易ing:可以控制一下的 选择相应的成为第一响应者
  • 拉风的胖鱼:用在tableViewcell中,好像就失灵了
    为之则易ing:@取名真鸡巴难 6666666
    46cdc68ef124:@蓄力赢 借助这边的代码,前几天解决了。。
    为之则易ing:为什么失灵了

本文标题:iOS 使用UITextView计算高度,一行代码搞定

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