Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UITextView的NSAttribute字符串中创建可单击链接_Ios_Hyperlink_Character Encoding_Urlencode_Nsmutablestring - Fatal编程技术网

Ios 在UITextView的NSAttribute字符串中创建可单击链接

Ios 在UITextView的NSAttribute字符串中创建可单击链接,ios,hyperlink,character-encoding,urlencode,nsmutablestring,Ios,Hyperlink,Character Encoding,Urlencode,Nsmutablestring,我做了一个可点击的链接。我的代码: NSString *textBlah = @"blah bleh bluh blih...."; - (void)hyperLinkAndColor:(NSString*)name withAttribute:(NSMutableAttributedString*)attributedText{ if ([textBlah rangeOfString:name].location != NSNotFound) {

我做了一个可点击的链接。我的代码:

NSString *textBlah = @"blah bleh bluh blih....";

    - (void)hyperLinkAndColor:(NSString*)name withAttribute:(NSMutableAttributedString*)attributedText{

        if ([textBlah rangeOfString:name].location != NSNotFound) {
            NSRange rangeName = [textInformation rangeOfString:name];
            if ([name rangeOfString:@" "].location != NSNotFound) {
                name = [name stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
            }

            NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"linktink://?name=%@", name]];
            [attributedText beginEditing];
            [attributedText addAttribute:NSLinkAttributeName value:[url absoluteString] range:rangeName];
            [attributedText addAttribute:NSForegroundColorAttributeName value:[UIColor orangeColor] range:rangeName];
            [attributedText endEditing];
        }
    }        

它很好用。但我有一个问题。当“name”是您好 或হ্যালো 或者héllò…,url总是返回零。如何检测您好 或হ্যালো ... 并使其可点击?

修改代码以URL编码字符串,这样unicode字符就不会产生问题

NSString *textBlah = @"blah bleh bluh blih....";

- (void)hyperLinkAndColor:(NSString*)name withAttribute:(NSMutableAttributedString*)attributedText{

    if ([textBlah rangeOfString:name].location != NSNotFound) {

        NSRange rangeName = [textInformation rangeOfString:name];
        NSString *urlString = [NSString stringWithFormat:@"linktink://?name=%@", name];

        NSURL* url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        [attributedText beginEditing];
        [attributedText addAttribute:NSLinkAttributeName value:[url absoluteString] range:rangeName];
        [attributedText addAttribute:NSForegroundColorAttributeName value:[UIColor orangeColor] range:rangeName];
        [attributedText endEditing];
    }
}        

试试这个帖子,很高兴它能帮上忙!!快乐编码…: