iOS 获取UIWebView上面的按钮点击事件

转载 2015年11月21日 16:38:16

UIWebView的一些用法总结的网址 http://blog.csdn.net/zhaoweixing1989/article/details/13021513

 

在网上看到很多文章都说iOS的UIWebView比较耗内存,在我的项目中,最开始我也是用UIWebView来加载网页的。刚开始加载的是自己拼接成的Html,后来在Html中加入一个按钮,点击之后用当前的UIWebView去加载网络上的网页。程序跑起来发现非常耗内存,加载几个网上的网页之后就爆内存警告了,不处理的话很容易被评估拒掉app。后来就改成用系统的safari浏览器来打开网络上的网页,把着耗内存的工作交给苹果自己自带的浏览器来处理,就避免了我这个app crash。但是怎么获取网页上这个按钮点击的事件呢,这个按钮本身就绑定了一个url,怎么让它点击之后当前的UIWebView不去load这个url呢。

后来查了一下资料,发现UIWebView的协议里面有这么个方法,可以获取它加载的网页上面的事件,比如单击了图片,单击了按钮等等。

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

{

//判断是否是单击

    if (navigationType == UIWebViewNavigationTypeLinkClicked)

    {

        NSURL *url = [request URL];

        if([[UIApplication sharedApplication]canOpenURL:url])

        {

            [[UIApplication sharedApplication]openURL:url];

        }

        return NO;

    }

    return YES;

}


拼接的Html最后加的按钮的方法如下:

NSURL * path = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"source_page_button" ofType:@"png"]];

    [strReturn appendString:[NSString stringWithFormat:@"<div style='display:block;text-align:center;margin:0 auto;'><a href='%@'><img src='%@'></a></div>",_url,path]];


这样写了之后,点击按钮之后就不会用当前的UIWebView来加载网络上的网页,而是调用系统的Safari来打开。


注意:最后一点要返回YES,否则UIWebView刚开始将一片空白,这是因为第一次加载的时候也是UIWebView请求一个链接,如果返回NO,就不会去加载了。还可以对url的内容进行判断,看是什么请求。


接口,如果为webView添加了delegate对象并实现该接口,那么在webView加载任何一个frame之前都会delegate对象的该方法,该方法的返回值用以控制是否允许加载目标链接页面的内容,返回YES将直接加载内容,NO则反之。并且UIWebViewNavigationType枚举,定义了页面中用户行为的分类,包括

  • UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。
  • UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。
  • UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。
  • UIWebViewNavigationTypeReload,用户触击重新加载的按钮。
  • UIWebViewNavigationTypeFormResubmitted,用户重复提交表单
  • UIWebViewNavigationTypeOther,发生其它行为。

在ios编程中 对 UIWebView 的控件捕获 click事件

原文来源:http://www.cnblogs.com/jauntlin/archive/2011/08/20/2146389.html 自定义UITextView,然后将捕获tou...
  • remote_roamer
  • remote_roamer
  • 2012年05月30日 11:03
  • 6198

iOS 获取UIWebView上面的按钮点击事件

在网上看到很多文章都说iOS的UIWebView比较耗内存,在我的项目中,最开始我也是用UIWebView来加载网页的。刚开始加载的是自己拼接成的Html,后来在Html中加入一个按钮,点击之后用当前...
  • zhangkongzhongyun
  • zhangkongzhongyun
  • 2014年04月22日 16:21
  • 64388

ios UIWebView singleTap 单击事件的坑

项目需要使用UWebView实现预览ppt,pdf,word,excel的功能,于是选择是用UiWebView来实现,很快实现打开文件的核心功能,记在窃喜时候,单击和滑动隐藏navigationbar...
  • u012636086
  • u012636086
  • 2015年01月22日 17:57
  • 1178

通过UIWebView获取 m3u8的播放地址

我是这样做的,使用一个uiwebview加载一个视频网页,然后在回调方法中 - (void)webViewDidFinishLoad:(UIWebView *)webView {     ...
  • u010214502
  • u010214502
  • 2014年11月21日 10:16
  • 1571

iOS 中的UIWebview如何添加头视图的问题

要知道UIWebview是有个Scrollview的属性的,我们可以通过这个检测滚动的contentoffset进而拿到偏移量,可以根据这个做一系列的操作,但是添加透视图的并不需要这么麻烦,只需要更改...
  • June_email
  • June_email
  • 2016年03月16日 14:51
  • 1202

IOS 中获取web上button的请求跟点击事件 js

事情缘由,充值界面是第三方,所以点击充值确认按钮的时候,请求成功,但是没有跳转到下个界面(充值成功界面),原因或许是网络慢,过一会才跳转到下个界面,中间的这段时间,(充值确定按钮)还可以再次点击,所以...
  • Ghanhan
  • Ghanhan
  • 2017年05月09日 11:27
  • 899

iOS Swift3.0 UIWebView获取HTML(title,url,body...) stringByEvaluatingJavaScript

iOS Swift3.0 UIWebView获取HTML(title,url,body...) stringByEvaluatingJavaScript的使用
  • feng2qing
  • feng2qing
  • 2017年02月22日 22:25
  • 2288

IOS 实时获取UIWebView中的html内容

在开发时,可能需要提取网页中的部分数据,比如标签内的标题,或者是网页的描述信息,这里利用UIWebView的Javascript可内联HTML特性抓取网页中的元素实现的。 open func...
  • ljyanlj
  • ljyanlj
  • 2017年01月10日 17:39
  • 138

iOS获取UIwebView上面的点击事件

UIWebView的一些用法总结的网址 http://blog.csdn.net/zhaoweixing1989/article/details/13021513   在网上看到很多文...
  • Laber1314
  • Laber1314
  • 2014年07月24日 13:52
  • 440

UIWebView与javascript交互二通过页面的响应事件获取页面输入框内的值

接上篇文章,上篇文章实现了UIwebview对html文件的加载和对js事件的响应,但是对html页面上输入的值没有获取。今天就来说说这个首先要用到工具类WebViewJavascriptBridge...
  • HHL110120
  • HHL110120
  • 2015年04月22日 11:36
  • 1622
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 获取UIWebView上面的按钮点击事件
举报原因:
原因补充:

(最多只允许输入30个字)