Ben*_*ark 3 overriding objective-c uiwebview
是否可以覆盖UIWebView中的URL?例如,如果我想检测tel:links并将+1加到数字的开头,如果它还没有.
在Android上我这样做:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:1")) {
Intent intent = new Intent(Intent.ACTION_DIAL,
Uri.parse(url));
startActivity(intent);
}
else if (url.startsWith("tel:")) {
int start = url.indexOf(":");
String suffix = url.substring(start + 1);
String newUrl = "tel:1" + suffix;
Intent intent = new Intent(Intent.ACTION_DIAL,
Uri.parse(newUrl));
startActivity(intent);
}
else if(url.startsWith("http:") || url.startsWith("https:")) {
view.loadUrl(url);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我怎么能在Objective-C中做到这一点?
您可以实现webView:shouldStartLoadWithRequest:navigationType:Web视图委托方法.检查类型是否有"单击",然后检查请求的URL以查看它是否为tel:URL.如果是这样,您可以根据需要处理URL.
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSURL *url = request.URL;
NSString *scheme = [url scheme];
if ([scheme isEqualToString:@"tel"]) {
// Update the url as needed
// Now handled the url by asking the app to open it
[[UIApplication sharedApplication] openURL:url];
return NO; // don't let the webview process it.
}
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2824 次 |
| 最近记录: |