我需要给一个包含链接的UILabel。我需要这样做,当触摸链接时,它将在safari中打开。我尝试使用Web视图但它确实加载了。这引出了另一个问题。我用这段代码制作了一个Ui View:
//Stage 1
[_viewWeb setDelegate:self];
NSString *fullURL = @"https://www.facebook.com/pages/Restauracja-Hawełka/197503186962278";
//Stage 2
NSURL *url =[NSURL URLWithString:fullURL];
//Stage 3
NSURLRequest *requestObj =[NSURLRequest requestWithURL:url];
//Stage 4
[_viewWeb loadRequest:requestObj];
}
-(void)webViewDidStartLoad:(UIWebView *)webView {
[_labelLoading setHidden:NO];
}
-(void)webViewDidFinishLoad:(UIWebView *)webView {
[_labelLoading setHidden:YES];
}
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"ERROR VIEW NOT LOADED");}
并且所有内容都在ViewController.h
中声明。
但是我一直看到View没有加载消息......我该怎么办?提前致谢!儒略
答案 0 :(得分:2)
他们有很多方法可以做到这一点,最好的方法是使用UITextVeiw并添加以下属性,现在它将转为链接,每当你将链接作为textview的文本提供时,它将变为tapable,用户将切换到通过点击该链接的野生动物园:
textview.editable = NO;
textview.dataDetectorTypes = UIDataDetectorTypeAll;
如果您不想显示整个链接,那么您只需添加一个UITapgeasture recogonizer并在其操作上添加以下行:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];
答案 1 :(得分:1)
使用标签,您需要对其进行标记,然后审核非常难看的touchbegan...
事件。
相反,您应该使用背景清晰的按钮。 将其单击的事件连接到您的某些自定义方法,称为“launchBrowser”
在launchBrowser:(NSString *)urlString
-(void) launchBrowser
{
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
}
如果您想在Webview中执行所有这些操作并在Safari中启动链接,则需要覆盖 shouldStartLoadWithRequest这样的UIWebviewDelegate方法
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
[[UIApplication sharedApplication] openURL:[inRequest URL]];
return NO;
}
答案 2 :(得分:0)
你不能拥有带链接的UILabel,你可以做的是创建一个背景清晰的按钮:
-(void)viewDidLoad{
UIButton *linkButton = [[UIButton alloc] initWithFrame:CGRectMake(0,0,100,40)];
NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:@"Your Link Title"];
[title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, [title length])];
[title addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, [title length])];
[linkButton setAttributedTitle:title forState:UIControlStateNormal];
[linkButton addTarget:self action:@selector(openBrowser) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:linkButton];
....
}
- (void)openBrowser{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"yourURL"]];
}
答案 3 :(得分:0)