国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > 综合技术 > UIWebView使用小记

UIWebView使用小记

来源:程序员人生   发布时间:2015-03-02 08:51:00 阅读次数:4050次

对webview 加载的文本中所有的网址变成可点击操作处理(我的方法:过滤所有的网址,然后变成html中的超链接情势如:<a href="http://www.baidu.com">www.baidu.com</a>),1开始没发现有属性可以设置,尝试了自己过滤html内容,发现自己过滤html中的内容时,标签对中的网址、和1些图片显示的网址、或输入习惯(多了空格,多了些字符等)会造成比较困难正确的把网址过滤,和在替换时候会出错。忙活了1阵子。。。。(┬_┬)白白忙活了,还是做下网址过滤正则表达式的记录吧:

1.http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

2.((([A-Za-z]{3,9}:(?://)?)(?:[-;:&=+$,w]+@)?[A-Za-z0⑼.-]+|(?:www.|[-;:&=+$,w]+@)[A-Za-z0⑼.-]+)((?:/[+~%/.w-_]*)???(?:[-+=&;%@.w_]*)#?(?:[.!/w]*))?)

3.(((ftp|https?)://)(www.)?|www.)([da-z-_.]+)([a-z.]{2,7})([/w.-_?&]*)*/?

4.(?i)((?:https?://|wwwd{0,3}[.]|[a-z0⑼.-]+[.][a-z]{2,4}/)(?:[^s()<>]+|(([^s()<>]+|(([^s()<>]+)))*))+(?:(([^s()<>]+|(([^s()<>]+)))*)|[^s`!()[]{};:'".,<>???“”‘’]))


妈蛋啊!!原来webview有属性可以实现过滤。。。。。对,没错,就是下面的属性。~~o(>_<)o ~~ 以后看属性得认真

dataDetectorTypes属性(需要检测的数据类型),可使得webview文本中 电话,网址,地址等文本加上标识


如果上述属性已设置了,还没法使用,多是在html文本中加了屏蔽的属性

format-detection翻译成中文的意思是“格式检测”,顾名思义,它是用来检测html里的1些格式的,那关于meta的format-detection属性主要是有以下几个设置:

meta name="format-detection" content="telephone=no"
meta name="format-detection" content="email=no"
meta name="format-detection" content="adress=no" 
也能够连写:meta name="format-detection" content="telephone=no,email=no,adress=no"
下面具体说下每一个设置的作用:
1、telephone

你明明写的1串数字没加链接样式,而iPhone会自动把你这个文字加链接样式、并且点击这个数字还会自动拨号!想去掉这个拨号链接该如何操作呢?这时候我们的meta又该大显神通了,代码以下:

telephone=no就制止了把数字转化为拨号链接!
telephone=yes就开启了把数字转化为拨号链接,要开启转化功能,这个meta就不用写了,在默许是情况下就是开启!

2、email

告知装备不辨认邮箱,点击以后不自动发送

email=no制止作为邮箱地址!
email=yes就开启了把文字默许为邮箱地址,这个meta就不用写了,在默许是情况下就是开启!

3、adress

adress=no制止跳转至地图!
adress=yes就开启了点击
地址直接跳转至地图的功能,在默许是情况下就是开启!



UIWebView在发送要求之前,都会调?用这个?方法,如果返回NO,代表停?止加载 要求,返回YES,代表允许加载要求

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

可用于监听上面所说的事件

[[[request URL] scheme]]isEqualToString:@"mailto"]--判断邮件地址

[[[request URL] scheme]]isEqualToString:@"tel"]--判断电话号码

[[[request URL] scheme]]isEqualToString:@"http"]--判断网址地址


默许标识长按有系统的调用,如何屏蔽呢

方法1、

<span style="font-family:KaiTi_GB2312;font-size:12px;">- (void)webViewDidFinishLoad:(UIWebView*)theWebView { [self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; [self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"]; } </span>

方法2、更安全的方式是,写html的时候加上以下代码,这样不管谁调用你的网页,长按链接都不会呼出弹窗框

<span style="font-family:KaiTi_GB2312;font-size:12px;"><script type="text/javascript"> window.onload=function(){ document.documentElement.style.webkitTouchCallout='none'; }; </script></span>

更多操作webview:http://blog.csdn.net/zhaoweixing1989/article/details/13021513






生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生