【发布时间】:2015-04-02 02:21:37
【问题描述】:
我的一个视图控制器底部有一个 Web 视图,其中包含链接。 我想要做的是,当用户单击 Web 视图中的其中一个链接时,它会打开一个 Web 视图,该视图会占据屏幕,其中包含用户单击的页面内容。或者,当用户单击 web 视图中的链接之一时,用户会被带到 safari 以显示链接的内容。 有人知道怎么做吗? 干杯。
上面是网页视图的屏幕截图,其中包含用户可以点击的链接。
【问题讨论】:
我的一个视图控制器底部有一个 Web 视图,其中包含链接。 我想要做的是,当用户单击 Web 视图中的其中一个链接时,它会打开一个 Web 视图,该视图会占据屏幕,其中包含用户单击的页面内容。或者,当用户单击 web 视图中的链接之一时,用户会被带到 safari 以显示链接的内容。 有人知道怎么做吗? 干杯。
上面是网页视图的屏幕截图,其中包含用户可以点击的链接。
【问题讨论】:
您可以使用 UIWebView 的委托- webView:shouldStartLoadWithRequest:navigationType:。在加载每个 url 之前,它将调用以下委托 -
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
您将能够从请求中获取请求 url 并推送新的视图控制器。
【讨论】:
试试这个:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
{
NSURL *requestURL =[ request URL ];
if ( ( [ [ requestURL scheme ] isEqualToString: @"http" ] || [ [ requestURL scheme ] isEqualToString: @"https" ] || [ [ requestURL scheme ] isEqualToString: @"mailto" ])
&& ( navigationType == UIWebViewNavigationTypeLinkClicked ) )
{
return ![ [ UIApplication sharedApplication ] openURL: requestURL] ;
}
return YES;
}
【讨论】: