2015-01-31 36 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;或其他控制器具有委託方法的代碼。

相關問題