1、既然要拦截按钮的事件,简单粗暴,先看下点击系统返回按钮后发生了什么:
通过3断点触发,显示左边事件队列第二部分是按钮事件,不考虑拦截,毕竟拦截污染太严重!
so, _UINavigationBarContentView的__backButtonAction:方法,成为最早拦截对象,试着使用runtime交换方法后调试(方法交换,网上一大堆)
查看_UINavigationBarContentView的方法列表,
方法列表 arg1参数完全没毛病,在交换方法中做一些自己需要的判断,OK,完美实现
需求是只对网页控制器的返回处理,试图在网页控制器中对backBarButtonItem进行拦截,然并卵,runtime拦截会对所有的导航栏返回污染,不过感觉比通过shouldPopItem中处理好多了,毕竟,这是从源头控制! 有好的方案,求教......
网友评论