如何在此UITableViewCell中添加UITextView?

时间:2013-02-20 08:14:04

标签: ios uitableview uitextview

我有UITableViewCell根据其中的内容动态调整大小。我在heightForRowAtIndexPath中执行此操作,如下所示:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
  if (indexPath.section == 1 && indexPath.row == 1) {
    NSDictionary *fields = self.messageDetailsDictionary[@"fields"];
    NSString *cellText = fields[@"message_detail"];
    UIFont *cellFont = [UIFont systemFontOfSize:14.0];
    CGSize constraintSize = CGSizeMake(self.tableView.frame.size.width - 50.0f, MAXFLOAT);
    CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
    return labelSize.height + 20.0f;
  } else {
    return tableView.rowHeight;
  }
}

cellForRowAtIndexPath中,我按如下方式自定义单元格:

case 1:{
  UITableViewCell *cell = [[UITableViewCell new] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"DetailCell"];
  if (cell == nil) {
    cell = [[UITableViewCell new] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"DetailCell"];
  }
  NSDictionary *fields = self.messageDetailsDictionary[@"fields"];
  cell.selectionStyle = UITableViewCellSelectionStyleNone;
  cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
  cell.textLabel.font = [UIFont systemFontOfSize:14.0];
  cell.textLabel.numberOfLines = 0; // This means multiline
  cell.textLabel.text = fields[@"message_detail"];
  return cell;
}

这一切都运行正常,但我希望单元格的内容能够检测到电话号码,日期/时间等。所以我想我需要将UITextView内容放在UITableViewCell内使这成为可能。

如何动态调整UITextView的大小,并通过修改上面的代码将其添加到包含内容的单元格?示例代码请提供答案,因为我已经尝试将UITextView添加为单元格contentView的子视图,但它不能像我期望的那样工作。

2 个答案:

答案 0 :(得分:0)

您可以使用sizeToFitsizeThatFits:方法调整UITextView对象的大小

答案 1 :(得分:0)

创建单元格时,需要将textView添加为其子视图,而无需单独设置textView大小。您只需要在

中返回行的高度时添加边距值
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath