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。