2009-01-11 56 views
8

我正在第一個簡單的iPhone應用程序的最後一段。我正在建立一個「關於」的觀點,用credit/info /等。iPhone應用程序的「約」文本中的超鏈接

我在最簡單的事情上失敗:如何將超鏈接嵌入到文本中?我目前正在使用帶有UILabel的UIView文本。

我已經看過這裏,和示例應用程序,但沒有得到任何地方。我應該使用UIWebView嗎?

Thx。

回答

11

是的,使用一個UIWebView並把靜態HTML。

像這樣:

[myWebView loadHTMLString:@"<html><head></head><body style=\"font-family: sans-serif;\"> .... </body></html>" baseURL:nil]; 
4

你可以通過調用的UIApplication的OpenURL觸發Safari瀏覽器:法要顯示的URL。 這將關閉你的應用程序,然後打開safari(或郵件/ youtube /等)。

你會想讓你的鏈接以某種方式,也許在一個按鈕。這部分取決於你。

如果您想要將html內容嵌入到您的視圖中,那麼請儘量使用UIWebView。

鏈接需要iPhone開發人員中心登錄。

UIApplication openURL:

iPhone URL Scheme Reference

1

感謝弗蘭克和瑞安。

除了Frank的指導,我還需要實現UIWebViewDelegate,並在Interface Builder中鏈接到它。原因是每個被點擊的鏈接都會在我的應用程序中打開(沒有可能的導航...)。我只需要實現此方法與適當應用打開所有網址:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
     [[UIApplication sharedApplication] openURL:request.URL]; 
     return false; 
    } 
    return true; 
} 
6

在指定的URL啓動網頁瀏覽器:

NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"]; 
[[UIApplication sharedApplication] openURL:target]; 

該代碼可以在任何地方運行。我對UILabel進行了分類,添加了touchedsEnded方法並將其放置在那裏。 (不要忘記設置labelname.userInteractionEnabled = YES;)

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"]; 
    [[UIApplication sharedApplication] openURL:target]; 
} 
4

UIWebView的可能是錯誤的方式來做到這一點。這是非常這樣的東西太多矯枉過正。你應該看看一個名爲的Github項目。

它會自動檢測.text屬性中的任何URL。

您可以使用它像這樣:

LRLinkableLabel *label = [[LRLinkableLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)]; 
label.delegate = self; 
label.text = @"Check out http://dundermifflin.com to find some great paper deals!"; 

然後,只需確保self實現此方法:

- (void) linkableLabel:(LRLinkableLabel *)label clickedButton:(UIButton *)button forURL:(NSURL *)url { 
    [[UIApplication sharedApplication] openURL:url]; 
} 

您還可以使用linkColortextColor屬性來配置標籤的外觀。從這一點上,您可以像使用其他UILabel一樣使用它。

當您全部完成以確保一切都清理完畢後,請記得將delegate設置爲nil

希望這會有所幫助。