问题标签 [nsapplication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1985 浏览

cocoa - 跨正在运行的应用程序更改 NSApplicationIcon?

我想调整在所有警报中自动显示的 NSApplicationIcon 图像,使其与应用程序包中的图像不同。

我知道可以使用 [NSApplication setApplicationIconImage:] 设置停靠栏图标——但这只会影响停靠栏,不会影响其他任何内容。

有时我可以解决这个问题:我有一个 NSAlert *,我可以调用 setIcon: 来显示我的备用图像。

不幸的是,我有很多带有 NSImageView 和 NSApplicationIcon 的 nib,我想影响它们,创建插座并输入代码来更改图标会很麻烦。对于我通过 BeginAlert... 类型调用提出的任何警报(它不会给 NSAlert 对象提供垃圾),我完全不走运。

任何人都可以想出一种合理的方式来全局(对于正在运行的应用程序的生命周期)用我自己的图像覆盖 AppKit 使用的 NSApplicationIcon,这样我就可以替换 100% 的警报(并使我的代码更简单) ?

0 投票
4 回答
2225 浏览

objective-c - 点击按钮而不是提升窗口

iTunes 迷你播放器(仅举一个例子)支持点击,当使用播放/暂停和音量控制时,应用程序不会被带到前面。

这是怎么做到的?

我一直在查看 Apple 的文档,并且在Cocoa Event-Handling Guide 中,Event Dispatch中指出:

一些事件,其中许多是由应用程序工具包(类型 NSAppKitDefined)定义的,与窗口或应用程序对象本身控制的操作有关。这些事件的示例是与激活、停用、隐藏和显示应用程序相关的事件。NSApp 在其调度例程的早期过滤掉这些事件并自行处理它们。

因此,根据我有限的理解(事件如何进入可可,应用程序)子类化 NSApplication 和覆盖 - (void)sendEvent:(NSEvent *)theEvent应该捕获每个鼠标和键盘事件,但是仍然会在单击时弹出窗口。因此,要么在 NSApplication 看到事件之前引发窗口,要么我错过了其他东西。

通过重新创建查看了 Matt Gallagher 的 Demystifying NSApplication,不幸的是,Matt 没有涵盖事件队列,所以除此之外,我很难过。

任何帮助将不胜感激,谢谢。

编辑添加:在Lloyd's Lounge找到一个帖子,其中他谈到了同样的问题,并链接到CocoaBuilder 上的帖子,先捕获鼠标右键。我目前正在尝试那里提供的代码,经过一番摆弄并重新激活 [theEvent 类型] 的 NSLog 后,鼠标左键活动被捕获。

现在,左键单击窗口将其向前移动会产生一系列事件类型,13, 1, 13它们是 NSAppKitDefined、NSLeftMouseDown 和 NSAppKitDefined。我可以过滤掉这些或找到它们的去向吗?

0 投票
1 回答
3468 浏览

cocoa - applicationShouldTerminateAfterLastWindowClosed: 当红色 x 用于关闭我的 Cocoa 应用程序时似乎不起作用

我有一个小的 OSX Cocoa 应用程序,它只显示一个 IKPicutreTaker 并将图片保存到一个文件中(如果已设置)。我使用 applicationShouldTerminateAfterLastWindowClosed: 在 pictureTaker 关闭时关闭应用程序。当我设置(当你选择了你想要的图片时完成)或者当你点击取消时,这一切都很好,但是当我点击窗口左上角的红色箭头时,应用程序不会退出窗口以这种方式关闭。这是预期的功能还是我做错了什么(没有设置一些标志?)。另外,有没有办法禁用这个按钮?

0 投票
2 回答
1459 浏览

cocoa - 在 Cocoa 中启动后停用代理应用程序

applicationDidFinishLaunching:在委托方法中调用应用程序后,应立即调用什么方法来停用应用程序?或者也许有更好的地方可以做到这一点?deactivate方法的文档NSApplication说我不应该直接调用这个方法,因为 AppKit 更了解如何停用东西。

0 投票
3 回答
10721 浏览

objective-c - 如何以编程方式使可可应用程序处于活动状态

我有一个后台进程,当按下热键时会出现一个透明窗口:

...窗口在其他窗口的前面显示得很好(如我所愿),但是直到我手动单击窗口,当窗口出现时任何处于活动状态的应用程序都保持活动状态。我期待“makeKeyAndOrderFront”也可以使应用程序处于活动状态,但是在我的 -applicationWillBecomeActive 中添加一个 NSLog 行表明它在执行鼠标单击之前没有收到任何活动通知。

有谁知道如何在我发出 -makeKeyAndOrderFront 的同时设置我的应用程序处于活动状态?我需要它处于活动状态,以便它可以开始接受键盘输入 - 需要任何帮助 :-)

0 投票
1 回答
315 浏览

iphone - iPhone applicationDidFinishLaunching 在模拟器中调用一次

我在 applicationDidFinishLaunching 方法中放置了一个 NSLog 语句。我构建并运行并查看日志输出。然后,如果我点击主页按钮(在模拟器中)并重新启动应用程序,我看不到日志输出。

为什么?

0 投票
1 回答
5366 浏览

cocoa - 禁用/启用应用程序菜单项

在尝试学习菜单处理的基础知识。我的测试应用程序的菜单栏有 3 个菜单——即“TestApp”、“File”和“Help”。我发现我可以完全删除这些菜单,只需调用say:

但是,我只想暂时禁用它们(将它们变灰)。请问有没有同样简单的方法可以做到这一点?

0 投票
5 回答
7825 浏览

objective-c - 可可:int主函数

我很好奇, int main 函数在 Cocoa 程序中起什么作用?实际上,我一直在查看的所有示例代码在 main.m 中都只有以下代码:

这到底是做什么的,程序实际上是从哪里开始逐步执​​行命令的?看来我的观念需要重新调整。

0 投票
1 回答
271 浏览

objective-c - 我将如何从 Deskshade 开发诸如 DeskLock 之类的东西?

抱歉打扰了,但我还有另一个问题。我将如何从 macrabbit 的 Deskshade 应用程序中执行诸如 DeskLock 之类的操作?我已经做了小窗户,这就是我来的地方。我知道如何使用 PresentationOptions 在 10.6 中“锁定”屏幕,但我不想冒险,因为上次它不会让我重新进入;]

编辑:DeskShade 应用程序实际上是为了覆盖您的桌面,隐藏所有图标。它还允许您通过几次淡入淡出/滑动来随机化壁纸图案。还有一个称为 DeskLock 的额外功能,它实际上呈现了一个带有锁定图标的半透明黑色斜面(类似于 Mac 内置的 AppSwitcher),您可以放置​​个人文本。当您单击锁定图标时,它会显示一个模式,询问您可以设置的密码。您也可以只输入此密码而不按任何内容,然后按 Enter 键,它会解锁屏幕。这也使用了隐藏桌面的 DeskShade 功能。

谢谢!

0 投票
1 回答
2467 浏览

cocoa - Cocoa:NSApp beginSheet 设置应用程序委托?

我正在尝试在我的应用程序中显示自定义工作表,但我认为我做错了。虽然一切似乎都很好,但我有一个相当奇怪的副作用。(这需要几个小时才能弄清楚)。事实证明,每次我在应用程序中显示工作表时,应用程序委托都会设置为工作表的实例,因此我的控制器会被取消设置为委托,从而导致各种问题。

我创建了一个名为 FailureSheet.xib 的 NIB 文件。我在 IB 中布置了我的界面,然后创建了一个名为 'FailureSheet.m' 的 'NSWindowController' 的子类,我将其设置为文件的所有者。这是我的FailureSheet类:

这里没有什么复杂的事情发生。现在这就是我在“控制器”类中显示 FailureSheet 的方式:

现在,如果我在显示我的工作表之前记录 [NSApp 委托] 是什么,它是正确的 <Controller-0x012345>。然后,在运行此代码并且我的工作表启动后,如果我再次记录它,它是 <FailureSheet-0xABCDEF>。

不知道我在这里做错了什么 - 有什么想法吗?