1

Apple 人机界面指南指出

提供点击的项目是用户可以通过单击在非活动窗口上激活的项目,而不是先单击以使窗口处于活动状态,然后再单击该项目。点按在执行诸如关闭或调整非活动窗口以及复制或移动文件等任务时提供了更高的效率。然而,在许多情况下,点击可能会使无意中点击项目的用户感到困惑。

不要为以下项目或操作提供点击:

  • 可能有害且不允许用户取消它(例如,邮件中的删除按钮)
  • 难以或不可能取消(例如邮件中的发送按钮)
  • 关闭对话框而不告诉用户采取了什么操作(例如,保存对话框中的保存按钮会覆盖现有文件并自动关闭对话框)
  • 从当前上下文中移除用户(例如,在 Finder 列中选择新项目可以更改 Finder 窗口的目标)

我想要做的是,如果用户单击特定按钮,除非窗口处于活动状态(例如,邮件中的删除消息按钮),否则它将不会发送消息。我怎样才能做到这一点?如果我需要子类 NSButton 那很好。

4

1 回答 1

1

查看 NSView 文档:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/occ/instm/NSView/acceptsFirstMouse

您需要覆盖acceptsFirstMouse以返回TRUE启用点击。

默认行为不是点击:

默认实现忽略 theEvent 并返回 NO。

您可能已经在您的代码中或在您的代码所基于的代码中覆盖了此方法。尝试删除acceptsFirstMouse代码中的实现。

于 2011-07-13T16:53:35.297 回答