我在几个应用程序中看到了这个键盘快捷键控件.我非常喜欢它!
它是什么? 是否可以在自己的应用程序中使用?

来自AppStore的几个OSX剪贴板管理器显示了确定复制到剪贴板的内容的源应用程序的能力.
我正在编写一些简单的剪贴板观察器,并希望在内容附近显示源应用程序图标,存储在一般的NSPasteboard中.我想知道如何实现这一目标.
据我所知,除了数据类型和数据本身之外,NSPasteboard不提供任何其他信息.
也许有一些事件或通知知道"复制"命令被触发了?还是其他一些方法?
我有一个NSView接受来自所有来源的文件 - 本地和远程.我NSFilesPromisePboardType用来接受从浏览器拖动的图像等远程文件.这是我用来将删除的图像复制到我的文件夹中的代码:
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
NSPasteboard * pboard = [sender draggingPasteboard];
NSDragOperation sourceDragMask = [sender draggingSourceOperationMask];
if ([[pboard types] containsObject:NSFilesPromisePboardType])
{
[sender namesOfPromisedFilesDroppedAtDestination:_fileStorageFolder];
return YES;
}
return NO;
}
Run Code Online (Sandbox Code Playgroud)
现在我注意到了两个问题:
在没有任何警告和Finder窗口的情况下从浏览器接收文件的正确方法是什么?
我有一个有趣的案例给你.并需要帮助.
我的Mac应用程序有一个层托管的NSView,里面有很多层,子层和子子层.想象一个带有项目(图标,文本标签)的Finder窗口......就像那样.每个项目都有一个按钮,选择背景图层.
一切都很好,直到你有1000个这样的项目.
现在有很多这些项目,当我尝试与此视图交互时,我的应用程序变得没有响应.而棘手的部分是它不是我的应用程序消耗CPU,而是WindowServer.它达到100%并且系统冻结一段时间.
重要的提示:
我的观点是app界面的一部分.有一个主窗口,其他视图.它们也有自己的结构.
而且我注意到,如果我把这个图层托管的视图放到一个单独的窗口中,它可以正常工作,没有冻结具有相同的1000个项目.但是如果我把它放回主窗口就开始停止系统.
问题
我已经进行了一些测试并删除了每个项目的所有子图层,每个项目只留下一两个.它减轻了系统的负担,但仍然很糟糕.我已经禁用了所有图纸 - 只是图标的小图像.没有帮助.
我有一个简单的任务,即为 NSWindow 制作动画,但仍然找不到完成此任务的方法。
我有一个窗口,我想通过将其动画设置到屏幕边缘之外来隐藏它。但连接两个显示器后,我的窗口只需移动到第二个显示器即可。
有什么方法可以对仅在主屏幕矩形区域中绘制的窗口进行一些剪辑吗?
我在苹果文档中没有找到类似的内容。我知道一些 UI 效果是通过使用一些技巧来模拟所需的行为来实现的。任何信息都非常感谢!
我的第一个猜测是创建一个带有辅助屏幕内容快照的新窗口。然后将我的主窗口滑动到此快照下方。但这是一个不好的方法 - 屏幕上的内容可能会动画(如视频)。