假设你网页中有一段话,中间内容一部分的内容是www.yesareno.com,UIWebview会给你自动识别成http://www.yesareno.com,当然大部分情况下是好的,但是也有一些特殊情况,你不像把www.yesareno.com识别成超链接(即点击无反应,先不管这变态的需求吧),如何实现呢?
</pre><p></p><p>下面是网页的源代码:</p><p></p><pre name="code" class="html"><body> <div id="content"><p><span style="font-family: 微软雅黑, 'Microsoft YaHei'; font-size: 28px;">如需帮助,请移步到官网 www.yesareno.cn解决。</span></p><p><br/></p></div></body>
当点击网页中的www.yesareno.com时,会调用webview的代理:
(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { // Determine if we want the system to handle it. NSURL *url = request.URL; }
此时打印url.schema是http,这就是webview自作聪明添加的http。那怎么破呢?
经过查看文档,发现webview有自动检测数据的属性,即 dataDetectorTypes, 其中包括
typedef NS_OPTIONS(NSUInteger, UIDataDetectorTypes) { UIDataDetectorTypePhoneNumber = 1 << 0, // Phone number detection UIDataDetectorTypeLink = 1 << 1, // URL detection #if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED UIDataDetectorTypeAddress = 1 << 2, // Street address detection UIDataDetectorTypeCalendarEvent = 1 << 3, // Event detection #endif UIDataDetectorTypeNone = 0, // No detection at all UIDataDetectorTypeAll = NSUIntegerMax // All types };看到这些,想必大家已经明白了一半了吧,最简单粗暴的办法是设置 dataDetectorTypes属性为UIDataDetectorTypeNone即可了。
之后再运行程序,点击 www.yesareno.com,就不会跳转了。
小技巧而已,随笔记录下。