需要帮助hendling(解雇)在Objective-c(iphone)中的ImagePicker(相机)

时间:2011-07-22 11:37:56

标签: iphone xcode camera uiimagepickercontroller dismiss

我解雇相机视图时遇到了一些问题。 即时通讯使用 UIImagePickerController 与此代码 -

-(void)viewDidAppear:(BOOL)animated{
UIImagePickerController *picker=[[UIImagePickerController alloc]init];
picker.delegate=self;
picker.sourceType=UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls=NO;
[picker.cameraOverlayView addSubview:mirrorOverlay];
picker.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:picker animated:YES];
[picker release];}

使用自定义按钮关闭相机并使用此代码将视图更改回主视图 -

-(IBAction)flipBack:(id)sender{
[self dismissModalViewControllerAnimated:YES];

我的问题是,当我按下按钮时,查看翻转,然后返回并再次呼叫相机。 我无法找到解雇相机和视图的方法。

请帮忙。 谢谢, 阿米尔。


更新: 谢谢您的帮助 !我搞清楚了! 我的问题是我正在使用相机的nib文件,当你想以委托中描述的不同方式使用相机时,你应该使用View而不是nib。

所以我的代码是正确的但是在错误的地方和格式。 谢谢大家!

如果有人需要帮助,我来帮助回来!

3 个答案:

答案 0 :(得分:1)

你需要解雇选择器,看起来你正在解雇提供选择器的控制器。

-(IBAction)flipBack:(id)sender{
    [picker dismissModalViewControllerAnimated:YES];
}

在这种情况下,您需要保留对picker的引用(例如:添加UIImagePicker * picker;作为viewcontroller类的成员)。

答案 1 :(得分:1)

似乎你把代码放在了错误的地方,因为每次你的viewDidAppear都会显示你的选择器而不是你需要将图像选择器代码放在某个按钮上。然后你可以实现picker的委托方法,比如imagePickerDidCancel和imagePickerDidFinishPickingMedia来解雇选择器实现imagePickerDidCancel或者如果你想要自定义取消方法你的代码看起来很好。

答案 2 :(得分:0)

在iOS7中出现/取消对于相机胶卷图像选择器,不推荐使用ModalViewController。

要打开图像选择器,请使用:

[controller presentViewController:mediaUI animated:YES completion:nil]; // open image picker

关闭或取消使用图像选择器:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:nil]; // close image picker
}

有关最佳信息,请参阅:https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/CameraAndPhotoLib_TopicsForIOS/Articles/Articles/PickinganItemfromthePhotoLibrary.html