Mam uniwersalną aplikację, która pozwala wybrać obraz z biblioteki zdjęć urządzenia do późniejszej manipulacji, kod działa dobrze na iPadzie, ale nic nie dzieje się na iPhonie, nawet przycisk anulowania i po wybraniu obrazu nic się nie dzieje ani tutaj nie jest mój kod:Problemy z przyciskiem anulowania UIImagePickerController nie działa
-(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");
}
Sprawdź Czy dodać uiimagepickercontrollerdelegate w pliku interfejsu ?? –
Chociaż to nie rozwiąże problemu, powinieneś przełączyć się do używania 'presentViewController: animated: completion:' i 'dismissViewControllerAnimated: completion:' w miejsce 'presentModalViewController: animated:' i 'dismissModalViewControllerAnimated:', ponieważ te dwa ostatnie są przestarzałe (patrz [docs] (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html)). –
Po przeczytaniu wszystkich sugestii za pomocą [self dismissModalViewControllerAnimated: YES]; naprawia problem w pewnym zakresie, ale co się dzieje teraz, to, że widok, który ma przycisk, aby otworzyć próbnik obrazu znika, jakieś pomysły? –