当用户触摸弹出框外部时,禁用 ipad 上的 ActionSheet 关闭
Posted
技术标签:
【中文标题】当用户触摸弹出框外部时,禁用 ipad 上的 ActionSheet 关闭【英文标题】:Disabling ActionSheet dismiss on ipad when user touches outside popover 【发布时间】:2011-11-11 13:00:45 【问题描述】:我的应用程序中显示了一个操作表,并且在 iphone 上一切正常。但是,在 ipad 上,它会自动在弹出框内创建操作表,当用户在操作表之外触摸时,我无法让它禁用关闭。
我已更改操作表在 ipad 上的显示方式,现在显示为:
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Choose a preloaded picture", @"Use a photo", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
actionSheet.tag = 1;
[actionSheet showFromRect:CGRectMake(100, 0, 300, 300) inView:self.view animated:YES];
[actionSheet release];
我也试过用。
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
return NO;
知道当用户在操作表之外触摸时如何阻止 uiactionsheet 弹出框消失吗?
【问题讨论】:
【参考方案1】:不会调用您的 popoverControllerShouldDismissPopover:
方法,因为它是 UIPopoverControllerDelegate 方法,并且您正在处理 UIActionSheet。由于 UIKit 会自动为您创建弹出框控制器,因此您将没有机会设置它的委托。您可以使用[popoverActionsheet superview]
访问弹出视图本身,但这不会为您提供 UIPopoverController。
从用户体验的角度来看,Apple 会要求你不要实现这样的行为——如果你需要以模态方式呈现选项(在用户做出选择之前它们不会消失),那么用户会更熟悉 UIAlertView,或 a modally-presented view controller of your own。
【讨论】:
以上是关于当用户触摸弹出框外部时,禁用 ipad 上的 ActionSheet 关闭的主要内容,如果未能解决你的问题,请参考以下文章