UIActionSheet and UIActionSheetDelegate is deprecated in iOS 8. To create and manage action sheets in iOS 8 / later, we need to use UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet because if we have used the same in our previous code it will simply not appear in iOS 8. Don't panic! It won't make a crash ;)
PFB - A quick adaptation for UIActionSheet/Delegate
PFB - A quick adaptation for UIActionSheet/Delegate
till iOS 7
#pragma mark #pragma mark Show options to pick image -(void)pickImage:(UIButton*)sender{ UIActionSheet *changeImageAction = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles: @"Capture Photo", @"Select from Gallery", nil]; [changeImageAction showInView:[UIApplication sharedApplication].keyWindow]; } #pragma mark #pragma mark UIActionSheetDelegate - (void)actionSheet:(UIActionSheet *)popup clickedButtonAtIndex:(NSInteger)buttonIndex { switch (buttonIndex) { case 0: NSLog(@"Open camera"); if ( [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] ){ [self getImage:UIImagePickerControllerSourceTypeCamera]; } break; case 1: NSLog(@"Open gallery"); [self getImage:UIImagePickerControllerSourceTypePhotoLibrary]; break; default: break; } }
from iOS 8
#pragma mark #pragma mark Show options to pick image -(void)pickImage:(UIButton*)sender{ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Change image" message:@"" preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Capture Photo" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { NSLog(@"Open camera"); if ( [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] ){ [self getImage:UIImagePickerControllerSourceTypeCamera]; } }]; UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Select from Gallery" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { NSLog(@"Open gallery"); [self getImage:UIImagePickerControllerSourceTypePhotoLibrary]; }]; UIPopoverPresentationController *popover = alertController.popoverPresentationController; if (popover) { popover.sourceView = sender; popover.sourceRect = sender.bounds; popover.permittedArrowDirections = UIPopoverArrowDirectionAny; } [alertController addAction:cancelAction]; [alertController addAction:okAction]; [self presentViewController:alertController animated:YES completion:nil]; }
Post a Comment