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

現時点で、cocos には iOS6 とポートトレインの向きに問題があることがわかりました。ImagePickerController は portrain でのみ動作するため、それがクラッシュの原因です。私はこのケースを監視し、何かが変わったら更新します.

于 2012-10-26T13:08:41.177 に答える
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 に答える