2015-01-31 95 views
1

我遵循使用UIImagePickerController自定义覆盖图的apple docs方法。现在它非常简单,我只在覆盖视图上有一个按钮。该按钮的目标为takePic。与此唯一的问题是,因为我不使用默认的相机控制,该imagePickerController委托方法永远不会获取图像后调用,使用UIImagePickerController自定义覆盖图捕获和保存图片

- (void) imagePickerController:(UIImagePickerController *)picker 
didFinishPickingMediaWithInfo:(NSDictionary *)info 

我觉得这种方法通常被称为上的默认覆盖用户捕获后一张图片并点击“选择照片”。但是在这个叠加层中,我只需要一个“拍照”按钮来拍摄并保存照片。

这是我的代码:

-(void)takePic 
{ 
    [cameraUI takePicture]; 
    NSLog(@"take pic called"); 
} 

// For responding to the user accepting a newly-captured picture or movie 
- (void) imagePickerController: (UIImagePickerController *) picker 
didFinishPickingMediaWithInfo: (NSDictionary *) info { 
    NSLog(@"Finished picking media"); 
    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType]; 
    UIImage *originalImage, *imageToSave; 

    // Handle a still image capture 
    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0) 
     == kCFCompareEqualTo) { 
     originalImage = (UIImage *) [info objectForKey: 
            UIImagePickerControllerOriginalImage]; 

     imageToSave = originalImage; 
     NSLog(@"image Saved"); 

     // Save the new image (original or edited) to the Camera Roll 
     UIImageWriteToSavedPhotosAlbum (imageToSave, nil, nil , nil); 
    } 

    // Handle a movie capture 
    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeMovie, 0) 
     == kCFCompareEqualTo) { 

     NSString *moviePath = [[info objectForKey: 
           UIImagePickerControllerMediaURL] path]; 

     if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) { 
      UISaveVideoAtPathToSavedPhotosAlbum (
               moviePath, nil, nil, nil); 
     } 
    } 

    [[picker parentViewController] dismissModalViewControllerAnimated: YES]; 
} 

正如我前面提到的,imagePickerController:didFinishPickingMediaWithInfo:不会被调用。如何将照片保存到相机胶卷?

+0

您是否设置了代表? – 2015-01-31 19:33:24

+0

是的,我把'cameraUI'的代表设置为self(ViewController)。 – SaleenS7 2015-01-31 19:46:24

回答

0

你把你的对象当作ImagePickerdelegate

如果你的cameraUI是你的(UIImagePickerController *)你应该在某个时候在呈现cameraUI之前得到代码cameraUI.delegate = self;或其他控制器具有委托方法的代码。