我正在使用UIActionSheet在iPad应用中向用户提供两个选项。用户选择一个或其他选项,UIActionSheetDelegate处理其余选项。但是,如果用户意外轻触iPad屏幕上的任何其他位置,则会自动关闭UIActionSheet,并且不会选择这两个选项。如何防止UIActionSheet自动解除,因此用户被迫选择其中一个选项?
答案 0 :(得分:0)
如果操作表位于UIPopover内,则解决方法是使用UIPopoverDelegate阻止弹出窗口在操作表存在时解除。另一种解决方案是使用UIAlertView,除了与警报交互外,不允许任何事情发生。可能不是你的解决方案。如果您触摸屏幕的其他部分,我不知道UIActionSheet会以任何其他方式解散自己。
为操作表可见时创建BOOL变量
BOOL actionSheetVisible; //in header file
//in @implementation file
-(void)displayAlert {
actionSheetVisible = YES;
//code to display UIAction sheet...
}
#pragma mark PopoverControllerDelegate method
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popover {
if (actionSheetVisible) {
return NO;
}
return YES;
}
#pragma mark UIAlerViewDelegate
...actionSheet:(UIActionSheet *)sheet selectedObjectAtIndex:(NSUInteger)index { ... //not sure what this method is at the moment
actionSheetVisible = NO;
//handle action sheet
}
答案 1 :(得分:0)
如何在不执行任何操作的应用程序窗口中添加手势控制器?或者尝试将其添加到工作表下方的视图中?完成后务必将其删除;)
答案 2 :(得分:0)
我会抛出另一个想法 - 在您显示操作表之前,添加一个覆盖整个屏幕的透明视图到窗口,并设置视图。 userInteractionEnabled = NO,然后在取消操作表时删除视图。 [我没有在iPad上测试过,但在手机上使用了这种技术]