2

我想使用 UIImagePickerController,我找到了这个例子

添加到 .h

@interface MenuScene : CCLayer <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
{
    UIWindow *window;
    UIImage *newImage;
}

添加到 .m

-(void)pickPhoto:(UIImagePickerControllerSourceType)sourceType{    
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    picker.sourceType = sourceType;
    picker.wantsFullScreenLayout = YES;
    [picker presentViewController:picker animated:NO completion:nil];
    [[[CCDirector sharedDirector] view] addSubview:picker.view];
}

-(void)imagePickerController:(UIImagePickerController *)picker
        didFinishPickingMediaWithInfo:(NSDictionary *)info{
    newImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [picker dismissViewControllerAnimated:YES completion:nil];
    [picker.view removeFromSuperview];
    [picker release];
    CCSprite *imageFromPicker = [CCSprite spriteWithCGImage:newImage.CGImage key:@"ImageFromPicker"];
}

我尝试打电话,但它在消息[self pickcPhoto:UIImagePickerControllerSourceTypeCamera]中崩溃[picker presentViewController:picker animated:NO completion:nil];

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“应用程序试图在自身上呈现模态视图控制器。呈现控制器是 . '

我在 iOS 6 上使用 Cocos2d v2 测试,如果有任何建议,我将不胜感激。

4

3 回答 3

2

更改代码如下,只需更改带有Edit in this line注释的行或可以复制该行

-(void)pickPhoto:(UIImagePickerControllerSourceType)sourceType{    
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    picker.sourceType = sourceType;
    picker.wantsFullScreenLayout = YES;
    [self presentViewController:picker animated:NO completion:nil]; //Edit in this line
    [[[CCDirector sharedDirector] view] addSubview:picker.view];
}

-(void)imagePickerController:(UIImagePickerController *)picker
        didFinishPickingMediaWithInfo:(NSDictionary *)info{
    newImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [self dismissViewControllerAnimated:YES completion:nil]; //Edit in this line
    [picker.view removeFromSuperview];
    [picker release];
    CCSprite *imageFromPicker = [CCSprite spriteWithCGImage:newImage.CGImage key:@"ImageFromPicker"];
}
于 2012-10-19T10:22:47.963 回答
0

创建一个具有 UIImagePickerViewController 属性的 UIViewController 并以模态方式加载它。

检查这个非常有用的 Apple 示例http://developer.apple.com/library/ios/#samplecode/PhotoPicker/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010196-Intro-DontLinkElementID_2

于 2012-10-19T10:22:27.247 回答
0

我发现此时cocos在iOS6和portrain方向上有些问题。ImagePickerController 仅在 portrain 中有效,因此这是崩溃的起源。我将监视此案例并在某些情况发生变化时进行更新。

于 2012-10-26T13:08:41.177 回答