关于UIImagePickerController使用3DTouch的Crash问题

最近公司项目APP报一个崩溃问题: [^sample_footnote]:这个BUG在iOS9.3系统上苹果已经默默的修复 ###一.问题分析

+[NSObject previewingContext:viewControllerForLocation:]: unrecognized selector sent to class 0x...... 
复制代码

看方法得知previewingContext:viewControllerForLocation:这个方法是在iOS推出3DTouch功能之后才有的API,可是公司的APP暂时还没有集成3DTouch功能,这就奇怪了.万般google之后终于找到了问题所在: 导致这个crash的原因是当用户从照片库中选择图片的时候使用3DTouch功能预览图片的时候导致的.这应该是iOS9的SDK一个BUG. forums.developer.apple.com/thread/2193… http://stackoverflow.com/questions/33331758/uiimagepickercontroller-crashing-on-force-touch 苹果官网和SOF有对此问题的描述. 目前来说触发的环境为:

硬件: iPhone6S和iPhone6S Plus 软件: iOS9之后的版本

###二.解决方案 既然定位到了问题解决起来就容易了.我们可以利用Runtime替换掉系统的这个方法,不做任何操作就可以了.网上有个工具https://gist.github.com/nolanw/bd0a8997632fe92a9f83 完美解决了这个问题.实现原理就是利用Runtime实现方法替换.链接可能打不开(翻墙吧),因此我也把这个库上传到了此处https://github.com/Herb-Sun/MSDPreventImagePickerCrashOn3DTouch 方便大家下载. ###三.使用方法 将这个类拖到工程中去,然后在

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
复制代码

方法中调用MSDPreventImagePickerCrashOn3DTouch()即可.

转载于:https://juejin.im/post/5aa53fb6f265da237a4ca476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值