UIImagePickerController不会显示摄像头,只会显示摄像头

时间:2012-01-21 17:40:23

标签: iphone objective-c ios xcode ios5

我有一个我正在使用的自定义视图控制器,它有一对按钮,一个用于拍照,另一个用于选择照片。当您选择照片时,它会显示相机胶卷没有问题。但是,当您选择拍摄照片时,它仍会显示相机胶卷 - 或照片流或实际相机以外的任何其他内容,即使我使用的是相机功能完美的iPhone。

- (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。

2 个答案:

答案 0 :(得分:4)

这可能太明显,但只是想确保我们涵盖基础知识。 你是在设备上尝试这个,而不是模拟器正确吗?如果相机应该显示,模拟器将始终只拉起相机胶卷。

答案 1 :(得分:0)

如果您还没有,则应检查以确保相机在当前设备上实际可用。如果不是,则用户不应访问“takePhoto”动作。你可以这样做:

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