0

私が使用しているコードにより、アプリケーションはカメラまたは写真ライブラリを一度だけ実行できます。異なるインデックスを使用して、これらの両方のアクションを actionSheet に実装しました。画像はカメラまたはフォト ライブラリを使用して選択されますが、初めてです。2 回目 ユーザーがこれらのアクションのいずれかを使用しようとすると、アプリケーションはこの特定のポイントでクラッシュします: -

self.imagePickerController.sourceType = sourceType;

その理由は何ですか?このコードを含むメソッドは次のとおりです。

- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType {
    self.imagePickerController.sourceType = sourceType;
    if (sourceType == UIImagePickerControllerSourceTypeCamera)
    {
        // user wants to use the camera interface
        self.imagePickerController.showsCameraControls = NO;
        if ([[self.imagePickerController.cameraOverlayView subviews] count] == 0)
        {
            // setup our custom overlay view for the camera
            // ensure that our custom view's frame fits within the parent frame

            CGRect overlayViewFrame = self.imagePickerController.cameraOverlayView.frame;
            CGRect newFrame = CGRectMake(0.0,
                                         CGRectGetHeight(overlayViewFrame) -
                                         self.view.frame.size.height - 10.0,
                                         CGRectGetWidth(overlayViewFrame),
                                         self.view.frame.size.height + 10.0);
            self.view.frame = newFrame;
            [self.imagePickerController.cameraOverlayView addSubview:self.view];
        }
    }
}
4

2 に答える 2

0

セットアップメソッドに送信している変数sourceTypeは、2回目のラウンドで何らかの理由で破損しています。

プログラムロジックでは、必ずsetupImagePicker正しいパラメータで呼び出してください。

于 2012-08-31T08:48:47.330 に答える
0

このコードをチェックしてください

-(IBAction)TakePicture:(id)sender{

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
            self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        if([UIImagePickerController isCameraDeviceAvailable: UIImagePickerControllerCameraDeviceFront ]){  
            self.picker.cameraDevice = UIImagePickerControllerCameraDeviceFront   ;
        }
    } else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:@"Camera is not available for this Device" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];
            self.takephoto.selected = NO;
        return;
    }


    self.picker.showsCameraControls = NO;
    self.picker.navigationBarHidden = YES;
    self.picker.toolbarHidden = YES;
    self.picker.wantsFullScreenLayout = YES;
    self.picker.allowsEditing=YES;

    // Insert the overlay
    if (!self.overlay) {
        self.overlay = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil];
    }
    self.overlay.pickerReference = self.picker;
    self.picker.cameraOverlayView = self.overlay.view;
    self.picker.delegate = self;

    [self presentModalViewController: self.picker animated:NO];

//    [[UIApplication sharedApplication] endIgnoringInteractionEvents];

}
于 2012-08-31T08:53:14.037 に答える