2012-01-21 71 views
3

我有一個自定義的視圖控制器,我使用的是一對按鈕,一個拍照,一個選照片。當您選擇照片時,它會顯示相機膠捲沒有問題。但是,當您選擇拍照時,即使我使用的是具有完美功能的相機,它仍會顯示相機膠捲 - 或照片流或實際相機以外的任何其他相機。UIImagePickerController不會顯示相機,只有相機膠捲

- (IBAction)getPhoto:(id)sender 
{ 
    [self makeUIImagePickerControllerForCamera:NO]; 
} 

- (IBAction)takePhoto:(id)sender 
{ 
    [self makeUIImagePickerControllerForCamera:YES]; 
} 

- (void) makeUIImagePickerControllerForCamera:(BOOL)camera 
{ 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    if (camera) { 
     NSLog(@"!!! Show camera"); 
     picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    } else { 
     picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
    } 

    [picker setMediaTypes:[NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil]]; 

    [self presentModalViewController: picker animated: YES]; 
} 

上面的代碼正是我使用的。不管怎樣,我只需要讓相機實際展示。謝謝!

*注意:我正在使用iOS 5和ARC。

+0

你必須發佈picker btw。 – mbh

+0

我正在使用ARC。 – zorz

回答

4

這可能太明顯了,但只是想確保我們涵蓋的基本知識。 你是試圖在一個設備上,而不是模擬器正確?如果應該顯示相機,模擬器將始終只會拉起相機膠捲。

+0

是的,我在設備上使用它:) – zorz

0

如果你還沒有,你應該檢查以確保相機實際上在當前設備上可用。如果不是,則用戶不應該訪問「takePhoto」操作。你可以這樣做:

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
    // ... enable camera 
} else { 
    // ... only enable the user to select from their photo album 
} 
+0

我確實也使用過這個檢查,以確保提出正確。 – zorz

相關問題