【发布时间】:2012-04-21 17:00:04
【问题描述】:
我有一个通用应用程序,允许从设备照片库中选择图像以供以后操作,代码在 iPad 上运行良好,但在 iPhone 上没有任何反应,甚至没有取消按钮,并且在选择图像后没有任何反应这也不是我的代码:
-(IBAction)grabImage:(id)sender
{
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
imgPicker = [[UIImagePickerController alloc] init];
[imgPicker setDelegate:self];
popover = [[UIPopoverController alloc] initWithContentViewController:imgPicker];
[popover setDelegate:self];
CGPoint position = [view1.superview convertPoint:view1.frame.origin toView:nil];
CGRect popOverFrame = CGRectMake( position.x, position.y, self.view.frame.size.width, self.view.frame.size.height );
[popover presentPopoverFromRect:popOverFrame inView:self.view permittedArrowDirections:nil animated:NO];
[popover setPopoverContentSize:CGSizeMake(320, 480)];
[imgPicker release];
}
else
{
imgPicker = [[UIImagePickerController alloc] init];
imgPicker.delegate = self;
imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:self.imgPicker animated:YES];
[imgPicker release];
}
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
pickedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
CGImageRef imgRef = pickedImage.CGImage;
app->setImage( pickedImage, CGImageGetWidth(imgRef), CGImageGetHeight(imgRef) );
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
// Enable texture siwth after an image has been loaded
[textureSwitch setEnabled:YES];
[textureSwitch setOn:YES];
app->isTextureDrawingOn = [textureSwitch isOn];
[fillsSwitch setOn:NO];
app->isFillsDrawingOn = [fillsSwitch isOn];
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
[popover dismissPopoverAnimated:YES];
}
ofLog(OF_LOG_VERBOSE, "cancel after selection");
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
[popover dismissPopoverAnimated:YES];
}
ofLog(OF_LOG_VERBOSE, "did cancel");
}
【问题讨论】:
-
检查是否在接口文件中添加了uiimagepickercontrollerdelegate??
-
虽然这不能解决您的问题,但您应该改用
presentViewController:animated:completion:和dismissViewControllerAnimated:completion:代替presentModalViewController:animated:和dismissModalViewControllerAnimated:,因为后两者已被弃用(请参阅@987654321 @)。 -
在阅读所有使用 [self dismissModalViewControllerAnimated:YES] 的建议后;确实在一定程度上解决了这个问题,但现在发生的事情是具有打开图像选择器的按钮的视图消失了,有什么想法吗?
-
解决我的 vis 被推到顶部的问题,我所要做的就是在取消时重新处理所有内容
标签: objective-c ios uiimagepickercontroller