2011-10-05 58 views
2

我試圖找到一種簡單的方法來在我的iOS應用程序中的標籤文本中包含超鏈接。目標是讓用戶點擊URL,該應用將使用該URL打開Safari瀏覽器。如何在Cocoa Touch的標籤中包含超鏈接?

我讀過關於包含一個URL作爲標籤的按鈕,但這不適用於我的應用程序。

有沒有簡單的方法來做到這一點?

非常感謝

回答

0

而不是調用Safari你可以啓動一個UIWebView。您可以更好地控制用戶在該網頁上可以執行的操作。

+0

是啊,我已經想過使用一個UIWebView 。不過,我仍然堅持如何將超鏈接包含在標籤文本中以最終啓動Safari或UIWebView – user965985

+0

我認爲ot--建議您使用帶有您自己的本地HTML的UIWebView作爲創建超鏈接的方式。 – Luke

+0

你真的想要標籤上的(有時是神祕的)網址嗎?您可以將「訪問xyz-Website」放在那裏。這將是描述,其中URL是隱藏給用戶的。 –

0

您需要爲您的標籤啓用用戶交互,然後重寫- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event方法來處理觸摸。

爲了使用戶交互設置以下屬性對你的UILabel:

urlLabel.userInteractionEnabled = YES; 

touchedEnded的例子:WihEvent:在UIViewController:

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch * touch; 
    CGPoint currPt; 

    if ((touches = [event touchesForView:urlLabel])) 
    { 
     touch = [touches anyObject]; 
     currPt = [touch locationInView:self.view]; 
     if ((currPt.x >= urlLabel.frame.origin.x) && 
      (currPt.y >= urlLabel.frame.origin.y) && 
      (currPt.x <= (urlLabel.frame.origin.x + urlLabel.frame.size.width)) && 
      (currPt.y <= (urlLabel.frame.origin.y + urlLabel.frame.size.height))) 
     { 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlLabel.text]]; 
     return; 
     }; 
    }; 

    return; 
} 
+0

這不回答OP。如果在文本中的超鏈接上發生觸摸或者沒有發生觸摸,檢查將如何進行? – vikingosegundo

+0

@vikingosegundo我正在做(可能是不正確的),假設UILabel只包含URL。我已經更新了該示例,以限制該操作僅觸及在UILabel視圖中開始和結束的操作。 –

+0

但是,這不會識別一個標籤上其他文本之間超鏈接的觸摸。而不是UILabel的子類,你應該使用UIGestureRecognizer。 – vikingosegundo

相關問題