【发布时间】:2013-10-07 22:03:00
【问题描述】:
我有包含 UITextView 的自定义 UITableViewCells。我在 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是否正在缓存其呈现的内容,或者正在检索的字符串是否不是您所期望的。跨度> -
设置好bodyTextView的文本后就可以记录了。它记录了我的期望(我设置的文本)。
-
有趣。当您在 UI 中显示错误字符串的单元格上调用
setNeedsDisplay时会发生什么? (您可以在调试器中执行此操作,以便于尝试。) -
正确的字符串显示在所有表格视图单元格中。问题是普通字符串显示为链接。例如,我可以有这样的文字:“这是我的文字。”并且它将是蓝色字体颜色并链接到,例如,在另一个表格视图单元格的文本视图中编写的网站。
-
明白了。我刚刚在另一个相关主题上找到了这个答案,这听起来有帮助吗? stackoverflow.com/a/18968687/774
标签: ios uitableview uitextview ios7