Я пытаюсь создать персонализированный UIImagePickerController
со следующим кодом. ECPhotoPickerController.h
@interface ECPhotoPickerController : UIImagePickerController
@property (strong, nonatomic) void(^didFinishSavingPhoto)(NSURL* url, UIImage* image);
@property (strong, nonatomic) void(^didDismissed)(void);
@end
ECPhotoPickerController.m
...
- (void)viewDidLoad {
[super viewDidLoad];
self.sourceType = UIImagePickerControllerSourceTypeCamera;
self.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.showsCameraControls = false;
[self setCameraOverlayView:self.overlayView];
self.delegate = self;
}
...
Настроенный контроллер средства выбора изображений будет представлен после нажатия кнопки,который вызвал бы следующий метод.
- (void)showImagePicker {
ECPhotoPickerController* vc = [[ECPhotoPickerController alloc] init];
vc.didFinishSavingPhoto = ^(NSURL *url, UIImage *image) {
self.selectedImage = image;
};
vc.didDismissed = ^{
// dismissed
};
[self presentViewController:vc animated:true completion:nil];
}
Но приложение будет only аварийно завершать работу на iOS 11 с журналом
[UIViewController _setCameraOverlayView:]: unrecognized selector sent to instance 0x108403dd0
, и до этого есть какой-то странный журналсбой.
[] <<<< AVOutputDeviceDiscoverySession (FigRouteDiscoverer) >>>> -[AVFigRouteDiscovererOutputDeviceDiscoverySessionImpl outputDeviceDiscoverySessionDidChangeDiscoveryMode:]: Setting device discovery mode to DiscoveryMode_None (client: ECalligraphy)
Настроенный класс средства выбора изображений явно наследуется от UIImagePickerController
.
И когда я инициализировал его с помощью [[ECPhotoPickerController alloc] init]
, он должен вызвать инициализацию суперкласса, поскольку я не реализовалинициализация ECPhotoPickerController
.
Я действительно запутался в этом сбое.Любой совет будет оценен.