How to make a uiactionsheet dismiss when you tap o

2019-01-23 15:45发布

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).

10条回答
放我归山
2楼-- · 2019-01-23 16:07

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.

查看更多
淡お忘
3楼-- · 2019-01-23 16:08

You can't do that by tapping outside because action sheet covers whole view some transparent black view with buttons in form of sheet in iphones but in ipad this behavior presents by default .

so for touching outside you cant call touch methods. so i don't think so you can do in this way and also when apple provide a cancel button in action sheet then why not you do use that button rather than this.

查看更多
冷血范
4楼-- · 2019-01-23 16:11

in iOS7 I add dismissWithClickedButtonIndex msg in gestureRecognizerShouldBegin, and it works.

查看更多
女痞
5楼-- · 2019-01-23 16:15

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];
查看更多
Bombasti
6楼-- · 2019-01-23 16:19

it may be useful to you Use:

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

previous so question

查看更多
Evening l夕情丶
7楼-- · 2019-01-23 16:20

No need of any tap gesture. Simply use UIAlertActionStyleCancel action.

查看更多
登录 后发表回答