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.aeth.com/iOSBook/ch30.html#_uiimagepickercontroller

好的,抱歉,没有通用代码。但它在架构上的工作方式与 MPMediaPickerController 的工作方式相同,为此我提供了代码来展示如何在 iPhone 和 iPad 上执行此操作:

http://www.aeth.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 回答