UIImagePickerController,检查相机

时间:2012-12-04 09:04:18

标签: iphone ios xcode uiimagepickercontroller

-(void)viewDidLoad
{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
   {
      imagePicker = [[UIImagePickerController alloc] init];
      imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
      imagePicker.showsCameraControls = NO;
      [self.view addSubview:imagePicker.view];
      }
      else
      {
      // UIAlertView…
      }
}

    -(void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        imagePicker.delegate = self;
        [self presentViewController:imagePicker animated:NO completion:NO];
    }

我想在你没有相机的时候发出警报。 iPhone应用程序启动并移动此代码。 但是,崩溃(此错误>

return UIApplicationMain(argc, argv, nil, NSStringFromClass([CameraAppDelegate class])); > Thread 1: signal SIGABRT)在模拟器中运行时。

为什么会这样?

2 个答案:

答案 0 :(得分:8)

使用此代码并在UIImagePickerControllerDelegate文件

中添加.h委托
 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])  
    {
       UIImagePickerController* picker = [[UIImagePickerController alloc] init];
       picker.sourceType = UIImagePickerControllerSourceTypeCamera;
       picker.delegate = self;
      picker.wantsFullScreenLayout = YES;
      [self presentModalViewController:picker animated:YES];
    }
    else
    {
        UIAlertView *altnot=[[UIAlertView alloc]initWithTitle:@"Camera Not Available" message:@"Camera Not Available" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        altnot.tag=103;
        [altnot show];
        [altnot release];

    }

答案 1 :(得分:3)

创建NSObject类并将其命名为ClsGlobal或您想要的名称..

然后在+(BOOL)isCameraDeviceAvailable中写下ClsGlobal.h,并在ClsGlobal.m中实现以下功能。

+(BOOL)isCameraDeviceAvailable
{
    BOOL isCameraAvailable=NO;
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        if([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront] || [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear])
            isCameraAvailable = YES;
    }
    return isCameraAvailable;
}

使用此类方法,如果相机可用,则返回YES。否则返回NO。

现在您可以使用[ClsGlobal isCameraDeviceAvailable];调用此方法,这意味着您的if条件看起来像if([ClsGlobal isCameraDeviceAvailable])

此方法可以在任何控制器的整个项目中为您提供帮助,您只需要像#import "ClsGlobal.h"一样导入ClsGlobal。