1

使用UIControl诸如a 之类的东西,UIButton您可以使用类似的东西 myControl.state 来确定控件当前是否被按下。

但是,我需要对一些UIBarButtonItems(不是从 派生的UIControl)做同样的事情,这样我就可以在其中一个被按下时停止我的表格的编辑。

这是我的代码:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    //other checks
    for(int b=0; b<self.toolbar.items.count; b++)
    {
        UIControl *currentControl= [self.toolbar.items objectAtIndex:b];
        if(currentControl.state==UIControlStateHighlighted)
        {
            return NO;
        }
    }
    return YES;
}

显然,它不起作用,因为它假设UIBarButtonItems 可以被视为UIControls,但是我将如何做我在这里尝试做的事情?

4

2 回答 2

1

如果您想更好地控制您UIBarButtonItems的最佳做法是将它们重新创建为UIButtons(使用自定义艺术等),然后使用-initWithCustomViewofUIBarButtonItem从实际的 UIViews 创建按钮项。

这将使您可以完全访问通常的按钮交互方法:唯一的缺点是默认情况下您不会获得漂亮的条形按钮样式,并且您必须自己为此提供艺术。

于 2012-07-06T21:45:00.450 回答
0

我之前也遇到过类似的问题。我无法修复它,所以我继续前进。这是我所做的:

使用 ToolBar 代替导航栏,然后使用 UIButton 代替工具栏中的 UIBarButtonItem。

于 2012-07-06T21:33:06.400 回答