3

我的应用程序中显示了一个操作表,并且在 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 弹出框消失?

4

1 回答 1

1

您的popoverControllerShouldDismissPopover:方法不会被调用,因为它是 UIPopoverControllerDelegate 方法,并且您正在处理 UIActionSheet。由于 UIKit 会自动为您创建弹出框控制器,因此您将没有机会设置其委托。您可以使用 访问弹出视图本身[popoverActionsheet superview],但这不会为您提供 UIPopoverController。

从用户体验的角度来看,Apple 会要求你不要实现这样的行为——如果你需要以模态方式呈现选项(在用户做出选择之前它们不会消失),那么用户会更熟悉UIAlertView,或您自己的模态呈现视图控制器

于 2011-11-11T15:57:49.657 回答