作者Piceman (派斯面)
看板MacDev
标题Re: [问题] uiwebview侦测到地址後开启的方式
时间Thu Oct 7 16:19:15 2010
※ 引述《zonble (zonble)》之铭言:
: ※ 引述《Piceman (派斯面)》之铭言:
: : uiwebview会直接开启google map显示地图
: : 而且无法回到app中,只能选择关掉重开
: : 我尝试过将request转送到新的uiwebview中
: : 但依然会另外开启无法返回的google map
: : 想请问的是,要用什麽方法让地址(如台北市中山北路200号)
: : 可以在app中呈现google map方法而又不会离开呢?
: 实作 UI webview delegate 里头的
: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
: 用 NSURLRequest 里头的 URL 类型,判断要开启的是哪一种
: URL,拦截下来自己处理。
先谢谢z大的提示
其实拦截事件部分已经做出来了
现在是卡在传送NSURLRequest,request.URL.scheme无法修改
主要原因是nsurl无法修改的问题
(打NSMutableURL会发现google上哀鸿遍野 XD
具体来说
//我使用uiwebview中侦测到地址时的url.scheme作为判断
if ([request.URL.scheme isEqualToString:@"x-apple-data-detectors"] ) {
//以下是测试request.URL中的资讯,结果注解在後
NSString* _t1=[request.URL absoluteString]; //out of scope
NSURL* _t2=[request.URL absoluteURL]; //x-apple-date-detetors://1
NSURL* _t3=[request.URL baseURL]; //nil
//由於iOS会拦截x-apple-data-detectors://这scheme并送到google map app
//所以我打算建立新的URLRequest然後修改scheme传给web
NSMutableURLRequest* _newRequest=[NSURLRequest requestWithURL:request.URL];
//但URL是readonly属性,无法修改
[_newRequest setValue:@"
http://" forKey:@"scheme"];
classDetailViewController* _newDetail=[[classDetailViewController alloc]init];
_newDetail.p_addressRequest=_newRequest;
[self.navigationController pushViewController:_newDetail animated:YES];
[_newDetail release];
}
等会会尝试有没有其他方法把建立一个不同scheme的url
如果不行,应该就只剩抓原始查询参数
然後送到
http://map.google取得经纬度再放到mapkit中的作法了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.51.119