当用户触摸外部弹出窗口时,禁用ActionSheet在ipad上关闭

时间:2011-11-11 13:00:45

标签: ios ipad uiactionsheet popover

我在我的应用程序中显示了一个动作表,它在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 popover被解雇?

1 个答案:

答案 0 :(得分:1)

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

从用户体验的角度来看,Apple会要求您不要实施此类行为 - 如果您需要以模式方式呈现选项(在用户做出选择之前它们不会消失),那么用户将会更多熟悉UIAlertView或a modally-presented view controller of your own