我正在使用 UIActionSheet 在 iPad 应用程序中向用户呈现两个选项。用户选择一个或其他选项,UIActionSheetDelegate 处理其余的。但是,如果用户不小心点击了 iPad 屏幕上的任何其他位置,UIActionSheet 会自动关闭,并且两个选项都不会被选中。如何防止 UIActionSheet 自动关闭,从而强制用户选择两个选项之一?
3 回答
如果 Action Sheet 在 UIPopover 内,解决方法是使用 UIPopoverDelegate 来阻止 popover 在存在 action sheet 时关闭。另一种解决方案是使用 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
}
将手势控制器添加到什么都不做的应用程序窗口怎么样?或者尝试将其添加到工作表下方的视图中?确保完成后将其删除;)
I'll throw out another idea - just before you show the action sheet, add a transparent view that covers the whole screen to the window, and set view. userInteractionEnabled = NO, then remove the view when the action sheet is dismissed. [I didn't test this on iPad but have used this technique on the phone]