runtime 拦截系统导航栏返回事件

1、既然要拦截按钮的事件,简单粗暴,先看下点击系统返回按钮后发生了什么:

通过3断点触发,显示左边事件队列

第二部分是按钮事件,不考虑拦截,毕竟拦截污染太严重!

so, _UINavigationBarContentView的__backButtonAction:方法,成为最早拦截对象,试着使用runtime交换方法后调试(方法交换,网上一大堆)

查看_UINavigationBarContentView的方法列表,

方法列表
arg1参数

完全没毛病,在交换方法中做一些自己需要的判断,OK,完美实现

需求是只对网页控制器的返回处理,试图在网页控制器中对backBarButtonItem进行拦截,然并卵,runtime拦截会对所有的导航栏返回污染,不过感觉比通过shouldPopItem中处理好多了,毕竟,这是从源头控制! 有好的方案,求教......

你可能感兴趣的:(runtime 拦截系统导航栏返回事件)