How do i make a uiactionsheet dismiss when you tap outside eg above it? This is for iPhone. Apparently the ipad does this by default (I may be wrong).
Ok got a solution. The following applies to a subclass of a UIActionSheet
// For detecting taps outside of the alert view
-(void)tapOut:(UIGestureRecognizer *)gestureRecognizer {
CGPoint p = [gestureRecognizer locationInView:self];
if (p.y < 0) { // They tapped outside
[self dismissWithClickedButtonIndex:0 animated:YES];
}
}
-(void) showFromTabBar:(UITabBar *)view {
[super showFromTabBar:view];
// Capture taps outside the bounds of this alert view
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOut:)];
tap.cancelsTouchesInView = NO; // So that legit taps on the table bubble up to the tableview
[self.superview addGestureRecognizer:tap];
[tap release];
}
The gist of it is to add a gesture recogniser to the action sheet's superview, and test all taps to see if they are above the action sheet.
it may be useful to you Use:
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
previous so question
After setting the cancelButtonIndex property of UIActionSheet with a valid value, tapping outside will dismiss the UIActionSheet. I have tried in iOS 9. However, if this cancelButtonIndex is not set of set to a wrong value (e.g. an index beyond the total button count in the UIActionSheet), nothing will happen when tapping outside.
I think you are looking for this method
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
EDIT
you can use this on your action sheet object and it works just fine but you cannot register event outside that sheet like the grayed out part
may be if you use UITapGestureRecognizer
on your view controller than it might do the trick.
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(nothing)];
[actionSheet addGestureRecognizer:recognizer];
No need of any tap gesture. Simply use UIAlertActionStyleCancel action.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With