私のアプリでは、私はUIActionSheetとUIImagePickerControllerを使います。アクションシートはオプションを開き(写真を選択し、ビデオを選択する)、イメージピッカーコントローラがライブラリを開きます。このシステムはiPhoneデバイスのテストには適していますが、iPadの場合、ピッカーコントローラは動作しませんが、アクションシートはうまく動作します。iOS - ピッカーコントローラが写真ライブラリを開けない
カメラと写真ライブラリのiOS10に必要な権限を設定しました。これは問題にはなりません。写真を選択するための
私のコードは:
- (void)selectPhoto {
self.imagePickerController.delegate = self;
self.imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
self.imagePickerController.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil];
[self presentViewController:self.imagePickerController animated:YES completion:nil];
}
必須のデリゲートメソッドは、いずれか書かれていました。私が言及したように、あらゆることがiPhoneの場合と同じように機能します。
私は最初の写真のライブラリを開こうとすると、私はこの警告メッセージが出ます:
に[警告] < _UIPopoverBackgroundVisualEffectView 0x147c5ad0>は は、その不透明度をアニメーション化するように要求されています。これは何も壊れていない1
を返し、アプリはまだ(冷凍ではない)が実行されている効果は が不透明になるまで壊れて表示される場合があります。しかし、私は写真のライブラリを開こうとするならば、私が手にこの時間:
警告: 上に存在しようと、すでに次に
を(null)を提示している、問題はポップオーバーの問題かもしれませんが、私答えを見つけることができませんでした。 ありがとうございました!
編集:私のアクションシートデリゲートメソッド:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
[actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
switch (buttonIndex) {
case 0:
[self selectPhoto];
break;
case 1:
[self selectVideo];
break;
default:
break;
}
}
編集2:私はthatが見つかりました:
iPadでは、あなたはで説明 ようポップオーバーを使用してブラウザインタフェースを提示する必要がありますinitWithContentViewController:とPresentingと UIPopoverControllerクラスリファレンスでのPopoverの終了。 iPadで、ブラウザインターフェイスをモーダル (フルスクリーン)で表示しようとすると、システムで例外が発生します。
UIPopoverControllerは廃止されました。したがって、私は別の方法を使うべきです。誰かがこれについて私を助けることができれば、私は幸せになるだろう。
iOS版はすでにマイク、カメラ、およびそれ以前のメディアライブラリにアクセスするためのアクセス許可が必要(iOS6、iOS7:あなたのInfo.plistファイルで指定することができ、すべてのCocoaのキーのリストがあり
を開くために、コードを使用するには、あなたが '' UIImagePickerController'を提示する前に、あなたの 'UIActionSheetController'をdismiss'がありますか? –
私は今はしませんでした。まだ同じ。 – anyName
アラートを終了するための追加コードを示してください。完了時にイメージピッカーを提示する必要があります。それ以外の場合は動作しません。 – Fogmeister