iOS-利用Runtime,KVC机制实现自定义的控制器拖拽Pop手势

       最近由于项目需要,了解了下苹果在iOS7以后对导航控制器增加的一个Pop手势的相关知识。但是系统限制必须是屏幕左侧的一定区域才能触发此手势。而且悲催的是由于项目需要自定义Pop左键,使得自带的手势效果也GG了。

        想着如果能够自定义一个与Pop手势完全一样的拖动手势,就可以使用系统的Pop动画,一切都变得完美就好了。

        我们知道,系统的这个手势在是导航控制器的一个属性interactivePopGestureRecognizer,继承于UIGestureRecognizer。悲剧的是,属性为readonly,所以我们不能直接把它转成自定义的手势。

      根据runtime机制遍历了下它所有的属性类型和属性名。可以看到UIGestureRecognizer有一个叫_targets的属性,它的类型为NSMutableArray。原来屌丝苹果是用数组来存储每一个手势的target,所以可以动态的增加手势触发对象。了解这个我们拿到这个属性的名字"_targets"通过kvc获取它,接着打印出来。

可以看到数组里面唯一的一组数据,其中有个UINavigationInteractiveTransition对象,对应着target为key值,猜测即为手势的target。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容