2010-07-14 38 views
1

我正在Cocoa中开发一个应用程序,它允许用户在OS X中的任何给定窗口上绘图。当拖动屏幕时,图形随相应的窗口一起移动。为了完成图形与下方窗口(及其内容)之间的这条连线,我想从窗口捕捉滚动事件,以便对图形的定位/可视性作出反应。如果其他应用程序收到滚动事件,是否有可能获得通知?

举例:

用户打开Safari并浏览网页。在特定的网站上,他/他围绕链接绘制一个圆圈,并手写笔记(这些都被视为绘图,通过手写板输入)。之后他/她移动窗口,图纸也被移动,以便它们保持在网站链接的顶部。然后他/她开始滚动网站,并且链接的位置发生变化(向上移动直到它位于视口之外)。

现在我想捕捉该事件,并将图层与图纸一起移动以保持链接的顶部。当链接不再可见时,我会关闭图形的可见性,并在滚动将链接重新带回到视口时重新打开。

我知道这是一个非常棘手的任务,能够拦截来自另一个应用程序的这些事件也可能被认为是操作系统的安全缺陷,但也许有人在那里是足够好的编码器给我一个提示......: )

Cocoa Accessibility类可能会有帮助,但直到现在我还没有找到解决方案。

感谢您的帮助。

哦,如果这不是棘手的你,也许你能告诉我如何在Safari浏览器切换选项卡,以通知;)

kkthxbai

回答

2

我不知道,如果你可以监视滚动事件。但是,如果您只是使用Accessibility API监视链接的位置,则会更容易。

只要持有该链接的参考,并不断轮询它的位置,如果位置改变,你就知道该怎么做。

您也可以尝试使用AXObserverAddNotification,但据我所知,没有通知可以监视位置更改。

如果您还没有发现它,Accessibility Inspector可以帮助您识别使用Accessibility API可以获得的东西,而pfiddlesoft的UI Browser允许您注册通知。

相关问题