ios - UIImagePickerController 与 Cocos2D 2.0

标签 ios cocoa-touch cocos2d-iphone

我想使用 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:pickerAnimated:NO Completion:nil];处崩溃,并显示消息

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

我正在 iOS 6 上使用 Cocos2d v2 进行测试,我将感谢您的任何建议。

最佳答案

更改代码如下,只需使用在此行中编辑注释更改行,或者可以复制该行

-(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"];
}

关于ios - UIImagePickerController 与 Cocos2D 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12971915/

相关文章:

ios - 在 iOS 应用程序中运行 Microsoft Internet Explorer

ios - 如何发送固定时间的推送通知?

ios - 使用 Swift 在音乐播放器应用程序中设置音乐播放 slider ?

objective-c - 在 View Controller 之间切换

c++ - 用于 Objective-C 的 iostream 和 sstream

iphone - 我要释放多少次已分配或保留的对象?

ios - 如何修复没有这样的文件 - ios/platform_www/cordova.js

iphone - 将 subview 添加到自定义类的 super View 不起作用

iphone - 如何通过导航栏的 subview 进行搜索

ios - Cocos2D 游戏在旧 Ipad 中崩溃