2017-08-07 9 views
1

私は文字列を示すUILabelを持っています。 UILabel内の特定のテキストの色を変更する必要があります。これらのテキストをクリックすると、Webビューで2つの異なるリンクが開きます。私が書いた 次のコード:この達成するためにどのようにUILabelテキストで2つ以上の文字列を異なるリンクにする方法

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"This is Yahoo and Google" attributes:nil]; 
    [attributedString addAttribute: NSForegroundColorAttributeName 
        value: [UIColor redColor] 
        range: NSMakeRange(8,5)]; 


    [attributedString addAttribute: NSFontAttributeName 
        value: [UIFont fontWithName:@"Helvetica" size:15] 
        range: NSMakeRange(8,5)]; 

    [attributedString addAttribute: NSFontAttributeName 
        value: [UIFont fontWithName:@"Didot" size:24] 
        range: NSMakeRange(18,6)]; 

    self.linkLabel.attributedText = attributedString; 

} 

を今私は、ユーザーがGoogleでクリックしたときに、それはgoogle.comを開く必要があり、ユーザーがヤフーをタップしたとき、それはyahoo.comを開く必要が欲しいです。ティはどのように可能ですか?

+0

代わりに2つのボタンを使用してください。 –

+0

お互いに隣り合う2つのボタンを使用 – FightOn

+0

このリンクを参照してください - https://stackoverflow.com/questions/21629784/how-to-make-a-clickable-link-in-an-nsattributedstring-for-a便利である – Chaitra

答えて

2

はUITextViewに変更しようと、それはスクロールが行の下

1

使用するようにUILabelとUITextViewが似てもらうために、偽の偽と編集可能に有効に設定し忘れないように、次の

let verbiage = links.text! // UITextView text 
    let attributes = NSMutableAttributedString(string: verbiage) 

    let googleRange = (verbiage as NSString).range(of: "Google") 
    let yahooRange = (verbiage as NSString).range(of: "Yahoo") 

    attributes.addAttribute(NSLinkAttributeName, value: "https://www.google.com", range: googleRange) 
    attributes.addAttribute(NSLinkAttributeName, value: "https://www.yahoo.com", range: yahooRange) 

    let linkAttributes: [String : Any] = [ 
     NSForegroundColorAttributeName: UIColor.red, 
     NSUnderlineColorAttributeName: UIColor.clear, 
     NSUnderlineStyleAttributeName: NSUnderlineStyle.styleNone.rawValue] 

    links.linkTextAttributes = linkAttributes 
    links.attributedText = attributes 

を使用する必要がありますattributedStringを割り当てる前にテキストへのリンクを追加してください

[attributedString addAttribute:NSLinkAttributeName value:[NSUrl [email protected]"https://www.google.com"] range:NSMakeRange(18,6)]; 

同様に、他の文字列も同様に行うことができます。

関連する問題