苹果人机界面指南声明:
提供click-through功能的项是指用户可以在非活动窗口中通过单击激活的项,而不是先单击使窗口激活,然后再单击该项。通过点击可以更高效地执行关闭或调整非活动窗口大小以及复制或移动文件等任务。然而,在许多情况下,通过点击可能会让无意点击项目的用户感到困惑。
和
不要为下列项目或操作提供点击链接:
- 是潜在的有害的,不允许用户取消它(例如,邮件中的删除按钮)
- 难以或无法取消(如邮件中的Send按钮)
- 不告诉用户采取了什么操作而关闭对话框(例如,保存对话框中的保存按钮覆盖现有文件并自动关闭对话框)
- 将用户从当前上下文中删除(例如,在Finder列中选择一个新项目可以更改Finder窗口的目标)
我想做的是,如果用户单击一个特定的按钮,它将不会发送其消息,除非该窗口是活动的(例如,邮件中的删除消息按钮)。我怎样才能做到这一点呢?如果我需要NSButton的子类化那很好
查看NSView文档:
http://developer.apple.com/library/mac/文档/可可/引用/ApplicationKit/类/NSView_Class/引用/NSView.html #//apple_ref/occ instm/NSView/acceptsFirstMouse:
您需要重写acceptsFirstMouse
以使TRUE
返回使 click through。
默认行为不是点击通过:
默认实现忽略事件并返回NO。
有可能你已经在你的代码中重写了这个方法,或者在你的代码中重写了这个方法。试着在你的代码中删除acceptsFirstMouse
的实现。