iOS 6.1では、 UITabBarの 1 つのタブに非モーダルにUIImagePickerControllerを表示しています。
私の初期設定で:
self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
self.picker.delegate = self;
self.picker.allowsEditing = NO;
[self.view addSubview:self.picker.view];
私は実装しました:
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
return;
}
私は電話したことがないので:
[picker presentViewController:(UIViewController *) animated:(BOOL) completion:^(void)completion];
電話する必要はありません:
[picker dismissViewControllerAnimated:NO completion:nil];
しかし、キャンセルボタンを押すと、キャンセルボタンがグレー表示され、UIImagePickerControllerがロックされているように見えます。画像/ビデオの切り替えやカメラの反転ボタンなど、一部のコントロールは機能しますが、写真を撮るボタンはフリーズしています。
別のタブに移動して [カメラ] タブに戻ると、UIImagePickerControllerがリセットされ、再び正常になります。この場合に実行されるコードは、viewWillAppearとviewDidAppearだけで、この状況に関連するものは何もありません。
iOS 7では、[キャンセル] ボタンを押しても何もロックされません。
UIImagePickerControllerは常にタブに表示されるため、キャンセル ボタンは必要ありません。
- [キャンセル] ボタンを非表示または無効にする
- ロックアップしないようにimagePickerControllerDidCancelを実装する