私はこれに2日間苦労しており、今こそ助けを求める必要があると信じています. SOF をしばらく検索した後、どの回答も私の問題を解決できませんでした。これが私のアプリケーションです...
アプリケーションでは、
- デバイスは iPad、iOS 6
- RootViewController は NavigationController です
- TopViewController は TabBarController です
- この TabBarController では、ナビゲーション バーの右バー ボタンから popoverController を提示します。
- ポップオーバーの表示には、ユーザーが新しい画像を取得して画像を選択するか、既存のものから画像を選択できるようにするボタンがあります。
- 新しいものを選択するには、ViewController UIImagePickerController を提示して、ユーザーがデバイス カメラで写真を撮れるようにします。presentModalViewController:animated: iOS < 6 の場合、およびpresentViewController:animated:completion: iOS > 6 の場合
- プレゼンテーションの前にステータスバーも非表示にします
- 既存の写真から選択するには、presentPopoverFromBarButtonItem:permitArrowDirections:animatedを行います。
- PopoverViewController も TabBarController によって参照しています
これが問題です
- UIImagePickerController の提示は、ユーザーが最初に新しいものを選択しようとすると、「アプリケーションがアクティブなコントローラー <[提示しようとするビュー コントローラーの名前]> をモーダルに提示しようとしました」という例外で常に失敗します。
- ただし、ユーザーがカメラロールから画像を一度選択してから、もう一度新しい画像を取得しようとすると、失敗しません。
これが私が試したものです
- RootViewController から存在
- TopViewController (TabBarController) から存在
- popoverViewController 自体から存在する
- TabBarController のタブから表示
- プレゼンテーションの前に popoverViewController を非表示にする
- popoverViewController の textField からの rejectFirstResponder
ここに私が使用している現在のコードがあります
// PopoverViewController, presented by a tab in TabBarController
- (IBAction)takePhoto:(id)sender {
[self.delegate takePhotoWithDeviceCamera];
}
// A Tab in TabBarController, delegate of popoverViewController
- (void)takePhotoWithCamera {
[[UIApplication sharedApplication] setStatusBarHidden:YES];
if ([UIDevice OSVersion] < 6.0) {
[self presentModalViewController:cameraPicker animated:YES];
} else {
[self presentViewController:cameraPicker animated:YES completion:nil];
}
}
このエラーの原因は何ですか?どんな提案でも大歓迎です。ありがとうございました。