2010-12-12 42 views
0

Je tire un texte d'une plist et le dessine dans un UIView. Le texte contient des termes que je veux mettre en surbrillance et l'interaction de l'utilisateur est activée pour que je puisse afficher une vue du dictionnaire avec l'explication de la fourchette. Je sais comment trouver leur emplacement sur la chaîne et cela fonctionne très bien. Mais je n'ai pas trouvé comment les faire apparaître en couleur différente. Et encore plus important pour moi - comment ajouter un reconnaisseur de robinet pour eux.Ajouter un TapRecognizer et une couleur différente dans une chaîne dans Xcode

J'apprécierais toute aide.

Merci Shani

Répondre

0

O.k J'ai trouvé une solution qui fonctionne très bien pour moi. J'utilise UIWebView comme vue du texte, puis j'ajoute le texte au format HTML. De cette façon, je peux utiliser CSS pour mieux formater le texte et même marquer une partie du texte comme un lien, dans l'exemple je veux que le mot consonne apparaisse comme un lien. (un autre grand avantage est que je peux ajouter le support de langages RTL).

UIWebView *webView =[[UIWebView alloc] initWithFrame:imgViewRect]; 
      webView.backgroundColor = [UIColor clearColor]; 
      webView.opaque=NO; 
      webView.delegate=self; 
      NSString *localizedPath = [NSString stringWithFormat:@"rt%@",pcard.card_number]; 
      NSString *localizedString = NSLocalizedString(localizedPath,@""); 
      NSString *cssPath = [[NSBundle mainBundle] pathForResource:@"style" ofType:@"css"]; 

      //do base url for css 
      NSString *path = [[NSBundle mainBundle] bundlePath]; 
      NSURL *baseURL = [NSURL fileURLWithPath:path]; 

      NSString *html =[NSString stringWithFormat:@"<a href=\"consonant\"><dfn>consonant</dfn></a>", 
          currentLanguage,dir,cssPath,langClass,localizedString]; 
      NSLog(@"%@",html); 
      [webView loadHTMLString:html baseURL:baseURL]; 

      [self addSubview:webView]; 

puis-je utiliser cette fonction pour reconnaître ce que les clics de mot et le déjeuner un UIView avec le texte dictionnaire:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request 
navigationType:(UIWebViewNavigationType)navigationType { 

    if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
     NSURL *URL = [request URL]; 
     NSLog(@"%@",[URL lastPathComponent]); //thats gives me the name of the clicked word. 


     //here you can set any function that you like. 
      //using the data from the url path. 

    } 
    return YES; 
} 

espère que cela aidera quelqu'un. shani

0

Ajouter un bouton transparent avec la même police et le texte devant où le mot apparaît dans le UIView. J'ai une classe qui va le faire avec un UILabel si vous le souhaitez? Cela crée le même effet qu'avec l'application Facebook.

+0

salut, merci pour votre réponse. n'est pas là pour effectuer le texte lui-même? en tout cas j'aimerais voir votre classe cela pourrait me sauver du temps de travail. merci encore – shannoga

+0

sûr ... vous auriez besoin d'utiliser des chaînes attribuées (que vous devrez descendre au niveau du texte de base pour atteindre). Je vais trouver le lien vers ma classe ... ce n'est pas moi personnellement, je l'utilise juste. :) –

+0

http://furbo.org/2008/10/07/fancy-uilabels/ –