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上面的按钮点击事件

UIWebView的一些用法总结的网址 http://blog.csdn.net/zhaoweixing1989/article/details/13021513   在网上看到很多文...

Android按钮的点击事件的4种写法

1.匿名内部类 2.创建一个类实现OnclickListener,setOnClickListener时传这个类的对象 3.让当前类直接实现OnclickListener,setOnClickList...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Swift3.0按钮的基本使用

按钮的创建let btn = UIButton(type: UIButtonType.custom); //注意在Swift中枚举类型可以省略枚举类 e.g. let btn = UIButton(t...

3.按钮点击事件

实现按钮点击有2中方式: 1.第一种是事件监听 事件监听通常先获取到按键的id: Button bt1 = (Button) findViewById(R.id.bt1); 再对按键添加事件监听...

iOS开发 UIWebView获取点击图片

在webView中点击图片需获取到图片链接,然后进行查看大图或者是下载操作,关键在于如何获取到当前被点击的图片的链接。介绍两种获取链接的方式: 1、网页整体添加触摸监听;2、注入js方法为图片资源添加...

IOS--UITableViewCell上的按钮点击事件处理

今天突然做项目的时候,又遇到处理自定义的UITableViewCell上按钮的点击事件问题。我知道有两种方式,可是突然想不起来之前是怎么做的了,好记性不如烂笔头,还是记录一下吧。 1、第一种方式...

ListView内 按钮的点击事件

注释写的很清楚,没啥好说的SimpleAdapter的使用public class MainActivity extends Activity { private ListView listVi...

【iOS】点击按钮获取验证码控件

来了新公司,马上四个月了。前后参与了两款APP的开发。其中涉及到输入手机号获取验证码的页面,做了三个。第一次的时候,那个APP只有一个地方需要获取验证码,所以代码没有封装。没想到,年后做的另外一款AP...

黑马Android:按钮的点击事件

android:按钮的点击事件

android监听按钮的点击事件

监听事件实现的几种写法 1、匿名内部lei
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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