在setTransparent之后突出显示NSButton:NO setEnabled:YES

时间:2012-06-13 07:20:27

标签: macos cocoa cocoa-bindings

我有2 NSButton个,两个都是有点按下的瞬间按钮。我有一个主窗口,其他视图交换进出。这两个按钮位于主窗口自定义视图(下一个,上一个)中,这有助于浏览视图。

当我在下一个按钮的帮助下到达2视图时,我启用并显示上一个按钮。因此,如果我在此时按下前一个按钮,将交换第一个视图,并使前一个按钮透明并启用。

此时如果按下一个按钮导航到第二个视图,将换入第二个视图,并再次显示上一个按钮。但突出显示。我怎么能摆脱这个?

1 个答案:

答案 0 :(得分:0)

我希望你会得到一些更好的答案,但我发现在这种情况下工作的一般技术是等待启用/禁用操作,直到事情已经为视图的新配置确定。

毕竟(如果我已经正确阅读了你的描述),你正在自己的动作处理程序中间隐藏一个按钮。

通过在主线程的运行循环的下一个(或更准确地说,稍后)调用上调用启用/禁用代码,可以轻松地推迟这个:

dispatch_async(dispatch_get_main_queue(), ^{

    // Enable or disable your buttons here.
});

作为一种解决方案,它有点像黑客攻击,但另一方面,在重新配置导航UI之前等待主视图不再处于不稳定状态并不是一种糟糕的方法。