正常的OSX应用程序在没有聚焦时首先点击鼠标点击应用程序.然后,应用程序将处理未来的点击次数.iTunes播放/暂停按钮和Finder的行为有所不同,即使没有聚焦,第一次点击也会被激活.我正在寻找一种方法来强制现有的应用程序(远程桌面连接.app)在第一次单击时起作用,而不仅仅是焦点.
检查NSView的acceptedFirstMouse,它可能正是您正在寻找的.
acceptsFirstMouse:如果接收器应该发送一个mouseDown:消息用于初始鼠标按下事件,则子类重写返回YES,否则返回NO.
(BOOL)acceptFirstMouse:(NSEvent*)theEvent
参数theEvent初始鼠标按下事件,必须在其窗口中的接收器上方.
讨论接收方可以无条件地返回值,也可以使用事件的位置来确定它是否需要该事件.默认实现忽略了Event并返回NO.
在子类中重写此方法以允许实例响应点击.这允许用户单击非活动窗口中的视图,只需单击一下即可激活视图,而不是先单击以使窗口处于活动状态,然后单击视图.大多数视图对象拒绝单击尝试,因此事件只会激活窗口.但是,许多控件对象(例如NSButton和NSSlider的实例)都接受它们,因此用户可以立即操作控件而无需释放鼠标按钮.