可可 – NSAlert可用于创建浮动窗口吗?

可可 – NSAlert可用于创建浮动窗口吗?,第1张

概述我有一个 Cocoa应用程序,它使用NSAlert类显示应用程序模式警报.我希望警报窗口浮动在所有其他应用程序的窗口之上.这可以用NSAlert完成,还是我需要实现自己的窗口? 我不知道这是否重要,但应用程序是一个代理应用程序(LSUIElement为true),实现为NSStatusItem. (有关该应用程序的更多信息,包括源代码,请查看<here>.) 以下是显示警报的代码: - (void 我有一个 Cocoa应用程序,它使用NSAlert类显示应用程序模式警报.我希望警报窗口浮动在所有其他应用程序的窗口之上.这可以用NSAlert完成,还是我需要实现自己的窗口?

我不知道这是否重要,但应用程序是一个代理应用程序(lsuielement为true),实现为NsstatusItem. (有关该应用程序的更多信息,包括源代码,请查看<here>.)

以下是显示警报的代码:

- (voID)showTimerExpire@R_301_6210@rt {    [NSApp activateIgnoringOtherApps:YES];    NSAlert *alert = [[NSAlert alloc] init];    [alert setAlertStyle:NSinformationalAlertStyle];    [alert setMessageText:NSLocalizedString(@"Menubar Countdown Complete",@"Expiration message")];    [alert setinformativeText:NSLocalizedString(@"The countdown timer has reached 00:00:00.",@"Expiration information")];    [alert addbuttonWithTitle:NSLocalizedString(@"OK",@"OK button Title")];    [alert addbuttonWithTitle:NSLocalizedString(@"Restart Countdown...",@"Restart button Title")];    NSInteger clickedbutton = [alert runModal];    [alert release];    if (clickedbutton == NSAlertSecondbuttonReturn) {        // ...    }}

我在runModal调用之前尝试过这个:

[[alert window] setfloatingPanel:YES];

我也试过这个:

[[alert window] setLevel:NSfloatingWindowLevel];

但是如果我点击另一个应用程序的窗口,这些都不会使窗口保持在其他窗口之上.我怀疑runModal不尊重这些设置.

解决方法 我不久前破坏了我的大脑.

我可以让它工作(唯一的方法)的唯一方法是继承NSApplication,并覆盖-sendEvent.在-sendEvent中,你首先调用super的实现,然后执行以下 *** 作:

ID *modalWindow = [self modalWindow];if (modalWindow && [modalWindow level] != MY_DESIRED_MODAL_WINDOW_LEVEL)    [modalWindow setLevel: MY_DESIRED_MODAL_WINDOW_LEVEL];

除此之外,即使这样做也不是一尘不染 – 当切换应用程序时 – 你永远不会想要这样做,因为它是一个公然的粗暴黑客.

所以是的,遗憾的是你最好自己编写自己的NSAlert版本.如果你真的关心这种可能性,我会在上面提出一个错误.非常奇怪的是,[[alert window] setLevel:someLevel]不受NSApplication的尊重,而且为了能够做到这一点,必须重新构建具有所有整洁的小自动布局功能的NSAlert是一种浪费.

总结

以上是内存溢出为你收集整理的可可 – NSAlert可用于创建浮动窗口吗?全部内容,希望文章能够帮你解决可可 – NSAlert可用于创建浮动窗口吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1022948.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存