我有一些自定义的UITableViewCells,其中包含UITextView。在Interface Builder中启用了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;
但这并没有改变我所看到的行为。
bodyTextView
中的文本:这将有助于显示UITableViewCell
是否缓存其呈现的内容,或者检索到的字符串是否与您预期的不同。 - cbowns