0

我有一个通用应用程序,并且有一个带有几个按钮的操作表。当我点击添加按钮(navigationItem.right)时,我希望它显示在弹出框中。它正确地做到了这一点,但是,将 actionSheet 绑定到 barbutton 项目,它允许我不断地点击添加按钮并有更多的弹出窗口。

我认为在弹出框外点击会忽略这个......

- (IBAction)ShowItemAdd:(id)sender
{
    addActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:[dataObj.preferences objectForKey:@"appts_name"], @"Reserve", nil];
    if ([[UIDevice currentDevice] isPad]) {
        [addActionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
    } else {
        [addActionSheet showInView:self.view];
    }
}

如果我将它绑定到 barbutton 项目,为什么它不会自动关闭?

编辑

点击顶部导航项栏(蓝色栏)中的任意位置不会关闭操作表,但在导航控制器之外点击会关闭操作表。

在此处输入图像描述

4

1 回答 1

1

在您的方法中,您应该首先检查您的操作表是否已经可见,如果是,请关闭它而不是创建新的操作表。

- (IBAction)ShowItemAdd:(id)sender
{
    if ([addActionSheet isVisible]) {

        [addActionSheet dismissWithClickedButtonIndex:[addActionSheet cancelButtonIndex] animated:YES];

    } else {

        addActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:[dataObj.preferences objectForKey:@"appts_name"], @"Reserve", nil];
        if ([[UIDevice currentDevice] isPad]) {
            [addActionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
        } else {
            [addActionSheet showInView:self.view];
        }
    }
}
于 2012-08-21T02:17:41.773 回答