gpt4 book ai didi

cocoa - NSAlert 的响应按钮未在右侧对齐

转载 作者:行者123 更新时间:2023-12-03 16:51:33 27 4
gpt4 key购买 nike

我有一个带有附件 View 和三个按钮的 NSAlert,这些按钮没有向右对齐(对于 LTR 系统),但似乎扩展到附件 View 的宽度,如下所示 NSAlert and accessory view

同时删除附件 View ,三个按钮未正确对齐在右侧

如何解决这个问题?我不想自己编写代码来替换 NSAlert,为什么我必须重新发明轮子?

我使用的代码是由 setAccessoryView 复制的文档和报告如下

NSTextView *accessory = [[NSTextView alloc] initWithFrame:NSMakeRect(0,0,600,15)];
NSFont *font = [NSFont systemFontOfSize:[NSFont systemFontSize]];
NSDictionary *textAttributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
[accessory insertText:[[NSAttributedString alloc] initWithString:@"Text in accessory view"
attributes:textAttributes]];
[accessory setEditable:NO];
[accessory setDrawsBackground:NO];

NSAlert *alert = [[NSAlert alloc] init];

[alert setMessageText:@"Message text"];
[alert setInformativeText:@"Informative text"];
[alert setAccessoryView:accessory];

[alert addButtonWithTitle:@"Btn 3"];
[alert addButtonWithTitle:@"Btn 2"];
[alert addButtonWithTitle:@"Btn 1"];

[alert runModal];
[alert release];

最佳答案

这是警报的当前默认布局。具有三个按钮的警报的处理方式有所不同,因为其常见用例是:

  • 第一个按钮(例如“确定”)表示确认
  • 第二个按钮(例如“取消”)代表取消
  • 第三个按钮(例如“杀死企鹅”)代表一种替代操作,可能具有破坏性。

第三个按钮位于左侧,以明确它代表的操作不同于“继续”(第一个按钮)和“停止”(第二个按钮)。

这可以在某些 Apple 应用程序中看到。页数:

enter image description here

在文本编辑中:

enter image description here

此外,NSAlert’s documentation指出:

The standard alert layout is subject to change in future system software versions. Therefore, if you rely on custom alert layout, you should make sure your layouts work as expected in future releases of Mac OS.

因此,他们将来可能会决定将所有三个按钮向右对齐,或者仅将第一个按钮向右对齐,其余两个按钮向左对齐。这解释了为什么 NSAlert 不提供公共(public) API 来指定其按钮的位置或对齐方式。

如果您确实需要不同的布局,看来您必须自己设计。

关于cocoa - NSAlert 的响应按钮未在右侧对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832525/

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