gpt4 book ai didi

objective-c - 如何从 NSAlert 按钮上获取焦点环?

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:36 24 4
gpt4 key购买 nike

有什么方法可以去掉 NSAlert 按钮的聚焦环。这就是我的意思:

Focus ring annoyingly appears on NSAlert button

这是我的代码:

[NSApp activateIgnoringOtherApps:YES];
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert addButtonWithTitle:@"Quit"];
[alert addButtonWithTitle:@"Cancel"];
[alert setMessageText:@"Warning!"];
[alert setInformativeText:@"How do you solve this question?"];
[alert setAlertStyle:NSWarningAlertStyle];
[alert beginSheetModalForWindow:nil modalDelegate:self didEndSelector:@selector(someMethodDidEnd:returnCode:contextInfo:) contextInfo:nil];

最佳答案

刚刚也在尝试解决这个问题并提出了这个解决方法:

NSAlert *alert = [NSAlert alertWithMessageText:@"Alert" defaultButton:@"123" alternateButton:@"" otherButton:@"" informativeTextWithFormat:@""];
NSButton *button = [[alert buttons] objectAtIndex:0];

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[[button window] makeFirstResponder:nil];
});

[alert runModal];

前两行很简单 - 创建一个警报并获取一个按钮。然后问题是实际将警报面板的第一响应者设置为 nil,但是,它可能仅在 警报以模式运行之后,因此这就是使用 dispatch_after 的原因。

但是,在您的情况下,当您使用工作表而不是运行它时,模态可以只使用这个:

NSAlert *alert = [NSAlert alertWithMessageText:@"Alert" defaultButton:@"123" alternateButton:@"" otherButton:@"" informativeTextWithFormat:@""];
NSButton *button = [[alert buttons] objectAtIndex:0];

[alert beginSheetModalForWindow:window modalDelegate:nil didEndSelector:NULL contextInfo:NULL];
[[button window] makeFirstResponder:nil];

关于objective-c - 如何从 NSAlert 按钮上获取焦点环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com