2012-07-18 78 views
0

蔭:的UIImagePickerController委託並沒有叫

UIImagePickerController *imgPkr = [[UIImagePickerController alloc] init]; 
     imgPkr.sourceType = UIImagePickerControllerSourceTypeCamera; 
     imgPkr.delegate = self; 

     imgPkr.cameraDevice=UIImagePickerControllerCameraDeviceFront; 
     [self presentModalViewController:imgPkr animated:YES]; 
     imgPkr.showsCameraControls = NO; 
     [imgPkr takePicture]; 

但這個代碼不要採取任何圖片和不調用該委託:

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

任何想法什麼是錯的代碼

回答

4

我的第一個猜測是[imgPkr takePicture];被調用之前,選擇器完成呈現。試着這樣說:

UIImagePickerController *imgPkr = [[UIImagePickerController alloc] init]; 
     imgPkr.sourceType = UIImagePickerControllerSourceTypeCamera; 
     imgPkr.delegate = self; 

     imgPkr.cameraDevice=UIImagePickerControllerCameraDeviceFront; 
     [self presentModalViewController:imgPkr animated:YES]; 
     imgPkr.showsCameraControls = NO; 
     [self performSelector:@selector(takePicture) withObject:self afterDelay:1.0]; 

OR

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(takePicture) 
              name:AVCaptureSessionDidStartRunningNotification 

object:nil]; 

&

- (void)takePicture 
{ 
    [imgPkr takePicture]; 
} 
+0

大老闆,,我想正是由於很多 – 2012-07-18 12:36:18

+0

@ ShehzadBilal很高興幫助。在Alladinian的答案中看到更好的方法來做到這一點的鏈接。我的方法只是假設攝像機會話將在1秒內開始,而他的答案會在準備好拍攝照片時偵聽攝像機發送的通知。 – 2012-07-18 12:38:37

2

我敢打賭,你在你的日誌消息說

的UIImagePickerController:忽略請求拍照;相機是 還沒有準備好。

這是一個常見的問題,因爲底層捕獲會話需要一些時間來啓動,所以你只需要確保相機準備拍照和然後呼叫takePicture方法。現在,在我的答案中詳細解釋了獲取通知的一種方式:How to know if iPhone camera is ready to take picture? 請注意,此方法適用於iOS5 +(舊版本中存在一個阻止此事件的系統通知的錯誤,與之前描述的相反文檔)。我希望這個對你有用。

+0

我打敗了你幾秒鐘,但你的答案肯定更好+1 – 2012-07-18 12:35:40

+0

@MDT Thanx男人:)就像'延遲'解決方案的注意事項:要小心,因爲在某些設備會話需要更多的時間開始。除此之外,我猜這是iOS版本的老版本 – Alladinian 2012-07-18 12:39:15

+0

感謝您的建議,是的,我沒有考慮它,但這是一個很好的觀點。 – 2012-07-18 12:40:57

0

另一種方式來等待相機準備好,直到拍攝照片是完成塊 - >

[self presentViewController:imagePicker animated:YES 
       completion:^ { 
        [imagePicker takePicture]; 
       }]; 

謝謝「GrandSteph」在 iOS taking photo programmatically