在Xcode中的字符串内添加TapRecognizer和不同颜色的单词

时间:2010-12-12 08:11:23

标签: ios nsstring uigesturerecognizer

我从一个plist中拉出一个文本并将其绘制成一个UIView。 该文本包含我想要突出显示的术语和启用了用户交互,因此我可以使用teem说明弹出字典视图。

我知道如何在字符串上找到它们的位置,并且工作正常。 但我没有找到如何使它们以不同的颜色出现。 对我来说更重要的是 - 如何为他们添加点击识别器。

我将不胜感激任何帮助。

由于 沙尼

2 个答案:

答案 0 :(得分:0)

在UIView中出现单词前面添加一个字体和文本相同的透明按钮。如果你愿意的话,我有一个可以用UILabel做的课程吗?它产生的效果与Facebook应用程序相同。

答案 1 :(得分:0)

O.k 我找到了一个对我有用的解决方案。

我使用UIWebView作为文本的视图,然后添加格式为HTML的文本。 通过这种方式,我可以使用CSS更好地格式化文本,甚至将一些文本标记为链接,在示例中我希望单词辅音将显示为链接。 (另一个很大的好处是我可以添加对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];

然后我使用这个功能来识别用字典文本点击和午餐UIView的单词:

- (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;
}
希望它会帮助某人。 SHANI