我試圖找到一種簡單的方法來在我的iOS應用程序中的標籤文本中包含超鏈接。目標是讓用戶點擊URL,該應用將使用該URL打開Safari瀏覽器。如何在Cocoa Touch的標籤中包含超鏈接?
我讀過關於包含一個URL作爲標籤的按鈕,但這不適用於我的應用程序。
有沒有簡單的方法來做到這一點?
非常感謝
我試圖找到一種簡單的方法來在我的iOS應用程序中的標籤文本中包含超鏈接。目標是讓用戶點擊URL,該應用將使用該URL打開Safari瀏覽器。如何在Cocoa Touch的標籤中包含超鏈接?
我讀過關於包含一個URL作爲標籤的按鈕,但這不適用於我的應用程序。
有沒有簡單的方法來做到這一點?
非常感謝
您可以通過使用NSArrtibutedStrings
來實現此目的 - 但我會建議圍繞此C函數使用一些包裝。我喜歡OHAttributedLabel
。
該演示包括精確顯示如何處理超鏈接。
而不是調用Safari你可以啓動一個UIWebView。您可以更好地控制用戶在該網頁上可以執行的操作。
是啊,我已經想過使用一個UIWebView 。不過,我仍然堅持如何將超鏈接包含在標籤文本中以最終啓動Safari或UIWebView – user965985
我認爲ot--建議您使用帶有您自己的本地HTML的UIWebView作爲創建超鏈接的方式。 – Luke
你真的想要標籤上的(有時是神祕的)網址嗎?您可以將「訪問xyz-Website」放在那裏。這將是描述,其中URL是隱藏給用戶的。 –
您需要爲您的標籤啓用用戶交互,然後重寫- (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;
}
這不回答OP。如果在文本中的超鏈接上發生觸摸或者沒有發生觸摸,檢查將如何進行? – vikingosegundo
@vikingosegundo我正在做(可能是不正確的),假設UILabel只包含URL。我已經更新了該示例,以限制該操作僅觸及在UILabel視圖中開始和結束的操作。 –
但是,這不會識別一個標籤上其他文本之間超鏈接的觸摸。而不是UILabel的子類,你應該使用UIGestureRecognizer。 – vikingosegundo
這正是我正在尋找的。謝謝! – user965985