Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Can';不要让NSAlert不断弹回dock图标_Objective C_Cocoa_Alerts_Nsalert - Fatal编程技术网

Objective c Can';不要让NSAlert不断弹回dock图标

Objective c Can';不要让NSAlert不断弹回dock图标,objective-c,cocoa,alerts,nsalert,Objective C,Cocoa,Alerts,Nsalert,我的问题似乎与你的完全相反 我无法让我的应用程序持续反弹dock图标 我也讨厌不断弹跳dock图标,但在这种情况下,如果用户没有意识到我的应用程序无法启动,他们可能会损失数小时的时间来跟踪数据 下面是我放在app-delegates应用程序willfinishLaunching:方法中的代码 if (!AXAPIEnabled()) { // I'm checking that Accessibility is turned on NSAlert *alert = [[N

我的问题似乎与你的完全相反

我无法让我的应用程序持续反弹dock图标

我也讨厌不断弹跳dock图标,但在这种情况下,如果用户没有意识到我的应用程序无法启动,他们可能会损失数小时的时间来跟踪数据

下面是我放在app-delegates应用程序willfinishLaunching:方法中的代码

if (!AXAPIEnabled()) {        // I'm checking that Accessibility is turned on

    NSAlert *alert = [[NSAlert alloc] init];
    [alert setAlertStyle:NSCriticalAlertStyle];
    [alert setMessageText:@"Lapsus cannot run."];
    [alert addButtonWithTitle:@"Open Accessibility Prefs..."];
    [alert addButtonWithTitle:@"Quit"];
    [alert setInformativeText:@"Lapsus needs \"Enable access for assistive devices\" in the Accessibility pane of System Preferences to be turned on."];

    [NSApp activateIgnoringOtherApps:YES];
    int attentionrequest = [NSApp requestUserAttention:NSCriticalRequest];

    NSInteger returnValue = [alert runModal];
    ....
    [NSApp cancelUserAttentionRequest:attentionrequest];
}
我已尝试删除requestUserAttention行

我试着把requestUserAttention放在很多不同的地方:直接在runModal调用之前,第一件事等等

我已尝试删除activateIgnoringOtherApps行

无论我做什么,dock图标都会反弹一次,然后停止

当我将我的应用程序带到前台时,用户可能会看到我的应用程序,但如果他们在正确的时间单击,他们的活动应用程序可能会隐藏关键错误消息

所以我想要一些东西,这样即使他们的船坞被隐藏了,他们也知道有些事情不对

我正在Mac OS X 10.5 Leopard上构建这个。你知道我做错了什么吗?或者Leopard不再支持不断反弹的dock图标了

更新:

我正在将方法调用放入applicationWillFinishLaunching:

当我将其放入ApplicationIDFinishLaunching:,并删除activateIgnoringOtherApps:调用时,它就按要求工作了

然而,我的问题仍然是“我可以将我的应用程序带到前台并弹出dock图标吗?从第一个答案来看,似乎不是这样,尽管我不确定我是否理解为什么

更新:

我不明白为什么,因为我没有仔细考虑。现在有人向我指出,窃取焦点意味着被告席得到了它想要的,这是完全有道理的

结论


如果您想引起用户的注意,请不要使用[NSApp activateIgnoringOtherApps:YES]如果你发送activateIgnoringOtherApps,那么你基本上是在拒绝你自己的通知。

好的。因此,你可以选择将你的应用程序放在前端和弹出dock图标。我不能两者兼有。对吗?将应用程序放在前端应该包括第一响应者。我正在学习iPhone,但我认为这是类似的。想想看:an应用程序反弹其图标是为了告诉用户出于某种原因它想成为最前面的。在它获得最前面的状态后,Dock会假设你得到了你想要的并停止反弹你的图标。另外,考虑一下,如果一个应用程序在运行时任意将自身及其所有窗口置于最前面,你会怎么做在打字、画画或做任何事情的过程中,除非你的警告真的有生命危险性,不要做一个混蛋和窃取焦点。当然,这是完全有意义的,当我,呃……想一想。我显然没有。):我没有看到我在做什么“偷窃焦点”。“但当你这样说的时候,我可以看出这是不可接受的。activateIgnoringOtherApps:是的,从现在起,我的工具箱将战胜它!谢谢你的评论。