2

現在、iOS 6 で実行する iPad アプリに取り組んでいます。

アプリに UIImagePickerController のサブクラスを実装しました。このサブクラスは、関数- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window関数をオーバーライドしてカメラを強制的に横向きにします。

それを介して画像ピッカーを起動するpresentViewControllerと、カメラの「読み込み」画面に引っかかる可能性がランダムにあるようです。閉じたカメラのシャッターのように見えるもの。この画面を終了するか、画面をロック/ロック解除しない限り、アプリはこの画面でフリーズします。その後、アプリは正しく機能します。

カメラ ビュー用のカスタム UI もあります。ただし、追加する前にこの問題に気付いていたので、関係ないと思います。

ピッカーを開くために必要なものは次のとおりです。

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    self.modalController = [[CameraLandscapeImagePicker alloc] init];
    self.modalController.delegate = self;
    self.modalController.sourceType = UIImagePickerControllerSourceTypeCamera;
    self.modalController.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil];
    self.modalController.allowsEditing = NO;
    [self.viewController presentViewController:modalController animated:YES completion:nil];

    //add the overlaying view ui
    [self.modalController buildCustomOverlay];

    self.newMedia = YES;
}

どんな助けでも大歓迎です。

[編集] - 更新: この問題を意図的に再現する方法を見つけました。以下は手順です。

  • アプリの「キャプチャ」ボタンをタップしてカメラをロードします
  • カメラ インターフェイスを終了します
  • iPadのホームボタンを押す
  • ホーム画面のアイコンをタップしてアプリを再度開きます
  • アプリの「キャプチャ」ボタンをもう一度タップします
  • シャッター画面でカメラがフリーズする

また、xcodeに接続しても発生することに気付きました。

UIImagePickerController オブジェクトがシングルトン経由で提供されるようにコードを変更しました。以前は、毎回新しい UIImagePickerController オブジェクトを作成していました。これは効果がなく、まだ同じ問題が発生しています。シャッター画面で約 5 分間アプリを実行したままにしましたが、まだスタックしています。

4

2 に答える 2

2

I've finally figured out what the problem was.

In the custom UI view that I added as the cameraOverlayView of the UIImagePicker I had a custom NavigationBar view. This view had it's delegate set to the UIImagePicker and the delegate property used retain.

In the end it was a single word change from "retain" to "assign" to fix it:

@property (nonatomic,assign) id  delegate;

If you're having a similar issue to this I recommend commenting out parts of your custom ui code to see what exactly is causing the problem.

于 2012-10-22T06:45:58.440 に答える
0

私はこの問題を抱えていましたが、すでにデリゲートの弱いプロパティを持っていました (割り当ても使用してみました) が、問題は解決しませんでした。

私の問題は、次のようにUIImagePickerController'sを直接割り当てることであることがわかりました。cameraOverlayView

self.picker.cameraOverlayView = self.overlay;

それを次のように変更するとうまくいきました

[self.picker.cameraOverlayView addSubview:self.overlay];

Apple のサンプル アプリで解決策を見つけました。

http://developer.apple.com/library/ios/#samplecode/PhotoPicker/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010196-Intro-DontLinkElementID_2

EDITさらにテストした結果、これでは実際には不十分であることがわかりました。

この投稿で提案されているように: Displaying UIImagePickerController within another UIView

シャッターアニメーションを「開く」ようにするために、次を追加しました。

[self.picker viewWillAppear:YES];
[self presentViewController:self.picker animated:NO completion:nil];
[self.picker viewDidAppear:YES];
于 2013-04-16T15:14:48.490 に答える