如何检测任何窗口标题栏的点击?

6
我希望能够在NSWindow上检测鼠标按下和抬起的事件。实际上,我想通过检测任何NSWindow标题栏上的点击来为整个系统添加功能。然而,在NSWindow中,我没有看到访问标题栏或chrome的任何内容。我想我可以监听任何单击事件,并通过窗口的大小和位置计算是否在标题栏内部检测单击事件,但我想知道是否有更好的方法。谢谢!

你有没有找到解决方案的运气? - igr
1个回答

2
你需要监听窗口框架上的mouseDown事件。窗口框架被隐藏在[[window contentView] superview]下面。你可以子类化NSWindow并创建自己的frame的NSView实现(我认为这是一项繁重的工作),或者尝试用自己的方法替换mouseDown方法。在这里http://parmanoir.com/Custom_NSThemeFrame展示了如何对drawRect方法进行类似操作。希望能有所帮助。

1
谢谢,这是一个很好的观点,我会进行测试。不过,我更感兴趣的是一个系统插件,可以在任何窗口上检测这个问题。 - akaru
很好的建议,将trackingArea添加到NSWindow的self.contentView?.superview中可以检测到标题栏上的鼠标事件... - cdf1982

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接