我在XCode 4.6中创建了一个简单的Cocoa-Application,NSPanel而不是默认的NSWindow.当我启用非激活选项并启动应用程序时一切正常:
面板显示在其他所有内容之前,当鼠标光标悬停在面板边缘时,它会从正常的箭头光标变为适当的调整大小光标,因此用户知道他可以调整面板的大小.
这可以正常工作,因为我没有点击任何其他应用程序,例如Safari或Finder.
从我曾经把焦点放到另一个应用程序的那一刻起,我可以点击并将鼠标悬停在我的面板上,光标样式将不会再改变 - 它始终保持箭头状态,并且无法恢复正常行为.
面板保持可选,在前面,您仍然可以移动并调整其大小,但鼠标光标始终保持箭头状态.然后,您甚至无法使用以下内容手动更改它:[[NSCursor crosshairCursor] set].
所以我需要找到一种方法来创建一个NSPanel保持正常自动更改 - cursorstyle - 当悬停在面板边缘 - 行为时,即使您将焦点放在另一个应用程序上.
我已经尝试使用自定义的NSPanel类,我已经覆盖了 canBecomeKeyWindow和
canBecomeMainWindow方法,所以他们返回YES但即使我制作我的Panel KeyWindow和MainWindow...
[myPanel makeKeyAndOrderFront:self];
[myPanel makeMainWindow];
Run Code Online (Sandbox Code Playgroud)
...它无法解决游标问题.
如果有人能在这里帮助我会很棒:)
PS.:在我的项目中,Base SDK和Deployment Target设置为10.8
所以我发现所描述的问题与面板的窗口状态无关.如果将其设置为key或main,则无关紧要,而是游标问题(始终保持箭头)与应用程序的激活状态相关.
只要拥有该面板的应用程序处于活动状态,但是如果您单击另一个应用程序,我的应用程序将被停用并且不会再次激活 - 即使您单击该面板 - 因为non-activating启用了" " 选项,所以一切正常.
问题是我需要" - 选项 - non activating因为我正在创建一个状态栏屏幕捕获应用程序,应该显示并在其他所有操作之前运行,但不会停用任何正在运行的应用程序.我可以解决光标问题
[NSApp activateIgnoringOtherApps];
但随后拍摄在Safari中运行的全屏视频的屏幕截图会停用Safari并最小化视频,这是我不想要的.
每次在名为“mybucket”的 S3 存储桶中创建 S3 对象时,我想通过 EventBridge 触发 AWS lambda 函数,但前提是其名称/密钥以“.csv”后缀结尾并且是在“”中创建的在该存储桶的“文件夹中。我目前拥有的 EventBridge 规则是这样的:
{
"detail-type": ["Object Created"],
"source": ["aws.s3"],
"detail": {
"bucket": {
"name": ["mybucket"]
},
"object": {
"key": [{
"suffix": ".csv"
}, {
"prefix": "in/"
}]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我实际上希望这个规则能够以正确的方式工作,但事实并非如此,相反,它的行为就像后缀和前缀过滤条件之间存在 OR 关系一样。据我了解AWS文档(https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns-content-based-filtering.html#eb-filtering-complex-example)上述规则应定义后缀和前缀过滤条件之间的 AND 关系,类似于文档中给出的示例:
{
"time": [ { "prefix": "2017-10-02" } ],
"detail": {
"state": [ { "anything-but": "initializing" } ],
"c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ],
"d-count": [ { "numeric": [ …Run Code Online (Sandbox Code Playgroud) rules pattern-matching amazon-web-services suffix aws-event-bridge