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

为什么是这样?

使用此代码并在.h文件中添加UIImagePickerControllerDelegate委托

  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]; } 

创buildNSObject类并将其命名为ClsGlobal ,或者你想要的名字。

然后在你的ClsGlobal.h+(BOOL)isCameraDeviceAvailable ,并在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];来调用这个方法[ClsGlobal isCameraDeviceAvailable]; 意味着你的条件看起来像if([ClsGlobal isCameraDeviceAvailable])

这个方法将帮助你在任何控制器的整个项目中,你只需要像#import "ClsGlobal.h"那样导入ClsGlobal。