解决UIImagePickerController在3DTouch机型上Crash的bug

UIImagePickerController是系统为我们提供的照片/视频采集器,可以拍摄照片/视频,或者从相册选择。但是这个类有一个bug,在从相册选择照片/视频的时候,如果是类似6S的支持3DTouch的机型,会造成Crash。
原因是系统请求

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location

等3DTouch相关的方法,而这个类是苹果自己写的,这个类里并没有支持3DTouch。

解决办法是对UICollectionViewController写一个扩展,对3DTouch的方法返回空,也就是告诉系统不支持3DTouch,就可以了:

UICollectionViewController+FixImagePickerCrash.h:


#import <UIKit/UIKit.h>

@interface UICollectionViewController (FixImagePickerCrash) <UIViewControllerPreviewingDelegate>

@end

UICollectionViewController+FixImagePickerCrash.m:


#import "UICollectionViewController+FixImagePickerCrash.h"

@implementation UICollectionViewController (FixImagePickerCrash)

- (void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit {
    return;
}

- (UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location {
    return nil;
}

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

相关阅读更多精彩内容

友情链接更多精彩内容