-(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)
在模拟器中运行时。
为什么会这样?
答案 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。