0

これをiPadでも機能させるにはどうすればよいですか?iPhone では正常に動作しますが、Apple はすべてのアプリが iPad で動作することを要求しています。これについて何か助けはありますか?

  - (IBAction)chooseImage:(id)sender
    {
        self.imagePicker = [[UIImagePickerController alloc] init];
        self.imagePicker.delegate = self;
        [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];


        [self presentViewController:self.imagePicker animated:YES completion:nil];
        }

    - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
        self.image = info[UIImagePickerControllerOriginalImage];
        [self.imageView setImage:self.image];
        [self dismissViewControllerAnimated:YES completion:nil];
    }

    - (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
    {
    [self dismissViewControllerAnimated:YES completion:nil];

    }

これでここまできました!iPad を使用してフォト ライブラリから画像を選択しても、クラッシュしなくなりました。問題は、画像が選択されないことですか?

助言がありますか?

- (IBAction)chooseImage:(id)sender
{

self.imagePicker = [[UIImagePickerController alloc] init];
self.imagePicker.delegate = self;
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){

    _popover = [[UIPopoverController alloc] initWithContentViewController:_imagePicker];
    _popover.delegate = self;
    [_popover setPopoverContentSize:CGSizeMake(320, 460)];
    [_popover presentPopoverFromBarButtonItem:[[UIBarButtonItem alloc]initWithCustomView:(UIButton*)sender] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

[self presentViewController:self.imagePicker animated:YES completion:nil];

}
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
if
    (self.popover && self.popover.popoverVisible) {
    [self.popover dismissPopoverAnimated:YES];
}
else
    self.image = info[UIImagePickerControllerOriginalImage];
[self.imageView setImage:self.image];
[self dismissViewControllerAnimated:YES completion:nil];
}

- (void) imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[self dismissViewControllerAnimated:YES completion:nil];

}
4

1 に答える 1

0

UIImagePickerController に関する私の本のセクションは次のとおりです。

http://www.apeth.com/iOSBook/ch30.html#_uiimagepickercontroller

申し訳ありませんが、ユニバーサル コードはありません。しかし、アーキテクチャ的には MPMediaPickerController と同じように機能します。MPMediaPickerController については、iPhone と iPad の両方でそれを行う方法を示すコードを示します。

http://www.apeth.com/iOSBook/ch29.html#EXmodalOrPop

ポップオーバーの管理は、提示されたビュー コントローラーの管理とは大きく異なるため、注意が必要です。そのコードは、あなたが心配しなければならないことのいくつかを示しています...

これは、私が書いたばかりのユニバーサル アプリの実際のコードです。

- (IBAction)doPickAPicture:(id)sender {

    UIImagePickerControllerSourceType type = UIImagePickerControllerSourceTypePhotoLibrary;
    BOOL ok = [UIImagePickerController isSourceTypeAvailable:type];
    if (!ok) {
        return;
    }
    UIImagePickerController* picker = [UIImagePickerController new];
    picker.sourceType = type;
    picker.mediaTypes = @[(__bridge NSString*)kUTTypeImage];
    picker.delegate = self;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        [self presentViewController:picker animated:YES completion:nil];
    else {
        UIPopoverController* pop = [[UIPopoverController alloc] initWithContentViewController:picker];
        [pop presentPopoverFromRect:[sender bounds] inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        self.currentPop = pop;
    }
}

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [self dismissViewControllerAnimated:YES completion:nil];
}

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    if (self.currentPop && self.currentPop.popoverVisible) {
        [self.currentPop dismissPopoverAnimated:YES];
    } else {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    [CATransaction setCompletionBlock:^{
        self.currentPop = nil;
        // do more stuff
    }];
}
于 2013-04-12T03:03:42.677 に答える