【问题标题】:Camera is not working in IOS相机在IOS中不工作
【发布时间】:2016-02-20 12:27:53
【问题描述】:

我已经实现了以下操作并打开了相机但应用程序崩溃了,有时打开并拍照时应用程序崩溃并且日志仅显示“对未渲染的视图进行快照会导致空快照。确保您的视图在快照或屏幕更新后的快照之前已至少渲染一次收到内存警告。”

我用于从图库中获取图像及其工作的相同功能。

 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:      (NSInteger)buttonIndex{
  if (buttonIndex==0) {
    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

    UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Alert"
                                                              message:@"Device has no Camera!"
                                                             delegate:nil
                                                    cancelButtonTitle:@"OK"
                                                    otherButtonTitles: nil];

        [myAlertView show];

    }else{

        [self performSelector:@selector(loadCamera) withObject:nil afterDelay:1.0];

    }    
}
}


-(void)loadCamera{

picker1 = [[UIImagePickerController alloc] init];
picker1.delegate = self;
picker1.allowsEditing=YES;
picker1.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker1 animated:YES completion:NULL];
}   

谁能帮忙。

【问题讨论】:

  • 请参考:我认为它很有帮助Open Camera in ios
  • CJ 现在你得到解决方案了吗?
  • 你试过下面的答案了吗?如果没有,告诉我。
  • 我使用了下面的,但应用程序仍然崩溃并且还使用它的代表 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
  • 我在 actionsheet 动作下调用这个相机功能。这有什么问题吗?

标签: ios objective-c uiimagepickercontroller ios-camera


【解决方案1】:

通过以下代码解决:

-(void)loadCamera{
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])  
            {
            dispatch_async(dispatch_get_main_queue(), ^{

            picker1 = [[UIImagePickerController alloc] init];
            picker1.delegate = self;
            picker1.allowsEditing=YES;
            picker1.sourceType = UIImagePickerControllerSourceTypeCamera;
            [self presentViewController:picker1 animated:YES completion: nil];

         });
       }
   }

此代码适用于 iOS 9.2 和 xCode 7.2

【讨论】:

  • 同样在 ios 12.1 中,这是 appstore 向我的应用程序报告的错误。我添加了 dispatch_async 并开始工作。谢谢
【解决方案2】:
- (IBAction)takeAPhoto:(VSButton *)sender {


    if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

        UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                              message:@"Device has no camera"
                                                             delegate:nil
                                                    cancelButtonTitle:@"OK"
                                                    otherButtonTitles: nil];

        [myAlertView show];

    }else {
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsEditing = YES;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;

        [self presentViewController:picker animated:YES completion:NULL];
    }

}

【讨论】:

  • presentModalViewController 在 iOS 6 中已弃用。建议使用 presentViewController@Muhammad Raheel Mateen
  • 我将粘贴方法,这也在我的项目中运行。
  • 它的显示错误和应用程序崩溃 > 对未渲染的视图进行快照会导致快照为空。确保您的视图在快照或屏幕更新后至少渲染一次。
【解决方案3】:
[self performSelector:@selector(loadCamera) withObject:nil afterDelay:1.0];
-(void)loadCamera

{
if ([UIIagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera)

{

picker1 = [[UIImagePickerController alloc] init];
picker1.delegate = self;
picker1.allowsEditing=YES;
picker1.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker1 animated:YES completion:NULL];

}

}

【讨论】:

  • 我使用了上述方法,但应用程序仍然崩溃并且还使用了它的委托 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 2016-01-20
相关资源
最近更新 更多