包含UITextView的UITableViewCell

时间:2013-12-12 06:49:22

标签: ios objective-c uitableview

我知道这已被问过很多次了。但是如何在UITextView中放置UITableViewCell,我需要满足以下条件:

  1. UITextView无法修改。
  2. 当我触摸UITableView滚动时,
  3. UITextView会滚动。
  4. UITextView应该是可以互动的,从某种意义上说,如果我有链接,我应该可以在Safari中打开它。
  5. 触摸UITextView也应该致电didSelectRowAtIndexPath
  6. 如果我[cell.textView setUserInteraction:NO]

    1,2和4是可能的

    但在这种情况下,3不起作用。如何满足所有这些条件?

    感谢。

6 个答案:

答案 0 :(得分:1)

我过去使用过TTTAttributedLabel,效果非常好!这是一个UILabel,它将文本检测和委托方法归因于处理与此文本的交互。因为它就像UILabel,它最终也满足你的观点。

  1. 不可编辑。
  2. 它不可滚动。
  3. 您可以与它进行交互(并自定义选择属性文本时会发生的情况)
  4. 触摸应该转发到单元格本身,触发didSelectCellAtIndexPath:

答案 1 :(得分:0)

尽管使用此代码: -

//[cell.textView setUserInteraction:NO]

使用: -

[cell.textView setEditable:NO];

答案 2 :(得分:0)

在这种情况下,最好使用UIScrollview并在其上添加UILabel。

并使用

  

交互式富文本UILabel

     

通过这个link来   和花哨UILabel

答案 3 :(得分:0)

你禁止互动的一种方式以及你试图让它变得可触摸的其他方式...请明确你的要求..意思是你可以尝试UILable或UIButton ..这个.. {{3} }

答案 4 :(得分:0)

指定一个等于单元格编号的标记值(或其他独特的标记值,并帮助您将textview映射到单元格)

禁用textview编辑并滚动。这将解决1& 2.启用文本视图的用户交互,3解决。在文本视图中添加手势识别器,然后检查文本视图标签并调用didSelectRowAtIndexPath并从该功能返回YES,以便允许textview接收该触摸并执行所需操作(打开链接等) )。

答案 5 :(得分:0)

试试这段代码。它工作正常。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];


    UITextView *desclbl = [[UITextView alloc] initWithFrame:CGRectMake(3, 15, 100, 50)];

    desclbl.backgroundColor = [UIColor clearColor];

    desclbl.userInteractionEnabled = NO;

    desclbl.editable = NO;

    desclbl.font = [UIFont systemFontOfSize:13];

    desclbl.dataDetectorTypes = UIDataDetectorTypeAll;

    desclbl.textColor = [UIColor blackColor];

    [cell.contentView addSubview:desclbl];

    desclbl.tag = 25;

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

}

UITextView *lblDesc = (UITextView*) [cell.contentView viewWithTag:25];

lblDesc.text = [NSString stringWithFormat:@"http://www.google.com"];

return cell;

}