2

我正在使用 UIActionSheet 在 iPad 应用程序中向用户呈现两个选项。用户选择一个或其他选项,UIActionSheetDelegate 处理其余的。但是,如果用户不小心点击了 iPad 屏幕上的任何其他位置,UIActionSheet 会自动关闭,并且两个选项都不会被选中。如何防止 UIActionSheet 自动关闭,从而强制用户选择两个选项之一?

4

3 回答 3

0

如果 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
}
于 2012-09-07T13:23:27.467 回答
0

将手势控制器添加到什么都不做的应用程序窗口怎么样?或者尝试将其添加到工作表下方的视图中?确保完成后将其删除;)

于 2012-09-07T13:27:15.897 回答
0

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]

于 2012-09-07T13:42:31.093 回答