解決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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容