NSButton 状态没有改变

qwe*_*_so 4 nsbutton swift

以下代码在我的沙箱中完美运行:

@IBAction func filterClicked(sender: NSButton) {
  println(sender.state)
  if let clickEvent = NSApp.currentEvent! {
    if Int(clickEvent.modifierFlags.rawValue) & Int(NSEventModifierFlags.ControlKeyMask.rawValue) != 0 {
      if sender.state == NSOffState {
        sender.state == NSOnState
      }
    }
  }
  println(sender.state)
}
Run Code Online (Sandbox Code Playgroud)

连接的按钮是一个开关按钮。因此,当它打开时,我按住 ctrl 单击它会保持打开状态。

不幸的是,在我真正需要它的应用程序中,它不起作用。我检查了在沙箱和 prod 应用程序中,两个按钮的绑定/设置是相同的。调试器显示

        sender.state == NSOnState
Run Code Online (Sandbox Code Playgroud)

根本不执行。state停留NSOffState。啃我的键盘没有帮助。任何的想法?

小智 6

您没有为按钮状态分配任何值。

sender.state = NSOnState
Run Code Online (Sandbox Code Playgroud)

Swift 4.2 更新

sender.state = NSControl.StateValue.on
Run Code Online (Sandbox Code Playgroud)