J'ai des UITableViewCells personnalisées qui contiennent une UITextView. La détection des liens dans l'UITextView est activée dans Interface Builder. Lorsque je charge la vue tableau pour la première fois, tout semble fonctionner, mais lorsque je fais défiler la vue tableau vers le haut et vers le bas, la détection des liens est perturbée. Plus précisément, les cellules contenant du texte ordinaire (qui sont présentées normalement au départ) sont affichées comme des liens (tout le texte de la vue texte est coloré en bleu et constitue un lien actif), et les liens pointent vers des objets qui se trouvent dans certaines des autres cellules de la vue tableau. Par exemple, un lien peut pointer vers un site Web qui se trouve dans une autre cellule du tableau, ou lancer un courrier électronique vers une adresse qui se trouve dans une autre cellule du tableau.
Il semble que lorsque les cellules de la vue tableau sont réutilisées, même si le texte de la vue texte est mis à jour, les liens sont en quelque sorte enregistrés.
Cela ne se produit que dans iOS 7, pas dans iOS 6. Cela se produit dans le simulateur et sur mon appareil.
Voici le code :
- (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;
}
Quelqu'un sait-il ce qui se passe ici, et comment le résoudre ?
J'ai essayé d'ajouter ce code après avoir défini l'affichage du texte, pour essayer de réinitialiser les liens :
cell.bodyTextView.dataDetectorTypes = UIDataDetectorTypeNone;
cell.bodyTextView.dataDetectorTypes = UIDataDetectorTypeAddress | UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber;
mais cela n'a pas changé le comportement que je vois.