0

因此,在我的 iPhone 4 设备中,我选择了一张图片后,我希望图片选择器弹出框消失。这适用于 iPhone 4,但以下代码不适用于 iPhone 5。

- (void) loadImage:(UIImage*) image {
float w = image.size.width;
float h = image.size.height;
float maxw = scrollView.frame.size.width;
float maxh = scrollView.frame.size.height;
float wratio = maxw / w;
float hratio = maxh / h;
float ratio = wratio < hratio ? wratio : hratio;
ratio = ratio < 1 ? ratio : 1;

int adjW = (int) (w * ratio);
int adjH = (int) (h * ratio);

UIGraphicsBeginImageContext(CGSizeMake(adjW, adjH));
CGContextRef context = UIGraphicsGetCurrentContext();
[image drawInRect:CGRectMake(0, 0, adjW, adjH)];

CGImageRef scaledImage = CGBitmapContextCreateImage(context);

UIGraphicsEndImageContext();

[appDelegate.model setCurrentImage:[UIImage imageWithCGImage: scaledImage]];
[self clear];
calcButton.enabled = YES;
trashButton.enabled = YES;
scribbleControls.enabled = YES;
[appDelegate.mergeViewCtlr setFirst];
}

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self loadImage:[info objectForKey:UIImagePickerControllerOriginalImage]];

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
    if ([popoverController isPopoverVisible]) {
        // called for iPad
        [popoverController dismissPopoverAnimated:YES];
    }
}
else {
     // called for iPhone and tried each of the next 3 lines individually
    [self dismissModalViewControllerAnimated:YES]; <== NOT WORKING
    [self dismissViewControllerAnimated:YES completion:nil]; <== ALSO NOT WORKING
    [picker dismissViewControllerAnimated:YES completion:nil]; <== ALSO NOT WORKING
}

[picker release];
}

我还注意到它说 dimissModelViewControllerAnimated 已被弃用,而我应该使用:使用 dismissViewControllerAnimated:completion: 代替。但是我将如何使用它?谢谢

这是呈现模型视图的代码: - (void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {

switch (buttonIndex) {
    case 0: { //photo library
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
            UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ) {
                if ([popoverController isPopoverVisible]) {
                    [popoverController dismissPopoverAnimated:YES];
                }
                else {
                    popoverController = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
                    popoverController.delegate = self;
                    [popoverController presentPopoverFromRect:CGRectMake( 250, -50, 320, 480 )
                                                       inView:[self view]
                                     permittedArrowDirections:UIPopoverArrowDirectionUp
                                                     animated:YES];
                }
            }
            else { // for iPhone
                [self presentModalViewController:imagePicker animated:TRUE];
            }
        } else {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Photo library is empty or unavailable" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alertView show];
        }
        break;
    }
    case 1: //camera
4

3 回答 3

2

dismissModalViewControllerAnimated::在 iOS6中已弃用。改为使用dismissViewControllerAnimated:completion:

于 2013-07-11T19:25:19.390 回答
1
[self dismissViewControllerAnimated:YES completion:nil];

在 iOS6 中弃用了 presentModalViewController 和 dismissModalViewController

于 2013-07-11T19:21:36.447 回答
0

尝试这个,

[self.imagePicker dismissViewControllerAnimated:NO completion:nil];

并使用

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

您还可以使用respondsToSelector为 iOS 5 和 ios6 制作案例。

于 2013-07-19T10:40:00.807 回答