是否可以在同一个应用程序中处理URL方案的调用?
这是一个例子: 在我的应用程序中有一个HTML链接,打开将触发safari。我想要做的是点击该链接,无论我在应用程序中的哪个位置,都可以通过webview推送视图控制器。
如果有可能,我必须在哪里做?如果我处理URL Scheme的调用,我需要在应用程序的委托上执行此操作。在这种情况下我应该在哪里做?如果需要推动viewcontroller,谁负责推送它?当前在屏幕上的appdelegate或视图控制器?
谢谢:)
答案 0 :(得分:2)
UITapGestureRecognizer
,如果您的链接位于标签中:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openLink:)];
[yourLinkLabel addGestureRecognizer:gestureRecognizer];
gestureRecognizer.numberOfTapsRequired = 1;
gestureRecognizer.cancelsTouchesInView = NO;
如果它是UIWebView
中加载的网页内的链接,则您可以使用:webView:shouldStartLoadWithRequest:navigationType
。每次用户点击UIWebView
。
答案 1 :(得分:2)
答案 2 :(得分:0)
那么涉及视图控制器有点烦人。我发现使用javascript在页面中加载新的链接/内容更容易。这样就会涉及一个webview,并且数据/ html文件会被洗牌。如果您需要更多信息,请与我们联系。
答案 3 :(得分:0)
试试这个。 在当前控制器中使用此代码
WebViewController *objWebViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
objWebViewController.m_strHtml=[NSString stringWithString:@"www.google.com"];//m_strHtml is a NSString variable in WebViewController class
[self.navigationController pushViewController:objWebViewController animated:YES];
[objContentWebViewController release];
在WebViewController中使用它
NSURL *url = [[NSURL alloc] initWithString:m_strHtml];
NSURLRequest * req = [[NSURLRequest alloc] initWithURL:url];
[url release];
[Webview loadRequest:req];
[req release];
您可以在Web视图中加载html,Web视图会打开其中的链接 作为默认值。使用以下代码。
m_strHtml=[[NSString alloc]initWithFormat:@"<html><body>%@</body></html>",m_strHtmlContent];//m_strHtmlContent is string variable to store the html content
[Webview loadHTMLString:m_strHtml baseURL:Nil];
Webview.backgroundColor=[UIColor clearColor];