iOS 7中UITableView链接检测缺陷中的UITextViews

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (88)

我有自定义的UITableViewCells,其中包含一个UITextView。我在接口生成器中打开了UITextView中的链接检测。当我第一次加载表视图时,一切似乎都正常,但是当我在表视图上下滚动时,链接检测就会变得一团糟。具体来说,只有常规文本的单元格(通常是最初显示的)显示为链接(文本视图中的所有文本都是蓝色的,是活动链接),链接指向其他表视图单元格中的对象。例如,链接可能指向位于不同表视图单元格中的网站,或者将电子邮件发送到位于不同表视图单元格中的地址。

当表视图单元格被重用时,即使文本视图文本被更新,链接也会被保存。

这种情况只发生在iOS 7中,而不是IOS 6中。它发生在模拟器和我的设备上。

以下是代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *sectionKey = [self.orderedSectionKeys objectAtIndex:indexPath.section];
    NSDictionary *infoDictionary = [[self.tableViewData objectForKey:sectionKey] objectAtIndex:indexPath.row];

    static NSString *cellIdentifier = @"InfoDefaultTableViewCell";
    InfoDefaultTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {        
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"InfoTableViewCells" owner:self options:nil];
        cell = [topLevelObjects objectAtIndex:0];
    }

    cell.bodyTextView.text = [infoDictionary objectForKey:@"description"];

    return cell;
}

有没有人知道这里发生了什么,以及如何解决?

我尝试在设置文本视图文本之后添加此代码,以尝试重置链接:

cell.bodyTextView.dataDetectorTypes = UIDataDetectorTypeNone;
cell.bodyTextView.dataDetectorTypes = UIDataDetectorTypeAddress | UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber;

但这并没有改变我所看到的行为。

提问于
用户回答回答于

将文本视图的文本设置为nil在将其设置为新文本字符串之前。

用户回答回答于

我尝试设置属性文本,将文本设置为零,将文本设置为@“”。

最后,迫使文本视图以可编辑模式退出才能成功。准备再利用

- (void)prepareForReuse
{
  ...
    textView.editable = YES;
    textView.editable = NO;
  ...
}

扫码关注云+社区

领取腾讯云代金券