UITextView を含むカスタム UITableViewCells があります。Interface Builder で UITextView のリンク検出をオンにしました。テーブル ビューを最初にロードしたときは、すべてが機能しているように見えますが、テーブル ビューを上下にスクロールすると、リンク検出がめちゃくちゃになります。具体的には、通常のテキストのみを含むセル (最初は通常どおり表示されます) がリンクとして表示され (テキスト ビュー内のすべてのテキストは青色で、アクティブなリンクです)、リンクはいくつかのオブジェクトにあるオブジェクトを指しています。他のテーブル ビュー セル。たとえば、リンクが別のテーブル ビュー セルにあった Web サイトを指している場合や、別のテーブル ビュー セルにあったアドレスに電子メールを起動する場合があります。
テキストビューのテキストが更新されているにもかかわらず、テーブルビューのセルが再利用されているように見えますが、リンクは何らかの形で保存されています。
これは、iOS 6 ではなく iOS 7 でのみ発生します。シミュレーターと私のデバイスで発生します。
コードは次のとおりです。
- (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;
しかし、私が見ている動作は変わりませんでした。