cocoa - NSSegmentedControl 以编程方式突出显示段

标签 cocoa osx-yosemite nssegmentedcontrol nscontrol

我有一个 NSSegmentedControl,其中,在用户单击时,在将操作发送到其目标之前应满足一些条件。

到目前为止,我设法通过覆盖 -mouseDown 事件处理程序并仅在成功检查我的条件后调用分段控制的 [super mouseDown] 处理程序来做到这一点。 只有一个问题。在调用 [super mouseDown] 之前,用户没有任何视觉线索表明某个段已被单击。

所以问题是:有没有办法以编程方式设置“突出显示”状态(或多或少类似于 NSButtons 的“setHighlighted”)?

最佳答案

您可以在操作方法中取消选择单击的段。 您可以通过其他操作方法绕行

- (IBAction)toggleSegments:(id)sender
{
    NSSegmentedControl *segmentedControl = sender;
    NSInteger selectedSegment = segmentedControl.selectedSegment;

    if (! conditionsAreMet) {
        [segmentedControl setSelected:NO forSegment:selectedSegment];

        return;
    }

    [NSApp sendAction:@selector(reallyToggleSegments:) to:nil from:sender];
}

关于cocoa - NSSegmentedControl 以编程方式突出显示段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26756715/

相关文章:

objective-c - 使用描述打印结构

objective-c - 如何查找鼠标是否在 View 上

java - 我可以在 Yosemite 上运行 32 位 JVM 吗?

macos - 如何在 Sublime Text 2 中启用 OS X cmd+ctrl+space 字符菜单?

macos - 在NSToolbar中实现NSSegmentedControl来控制NSTabViewController

objective-c - CSV 文件查找 - Objective C

objective-c - 什么是 "non-weak zeroing reference"

objective-c - NSSegmentedControl - 有没有办法将(id)representedObject附加到控件的每个NSSegmentedCell部分?

python - 无法让 IDLE 在 Mac 上运行

cocoa - 将 NSSegmentedControl 与 CoreData 结合使用