Кнопки ответа не выровнены по правому краю для NSAlert

StackOverflow https://stackoverflow.com/questions/7832525

  •  27-10-2019
  •  | 
  •  

Вопрос

У меня есть NSAlert с дополнительным представлением и тремя кнопками, кнопки не выровнены по правому краю (для системы LTR), но, кажется, расширяются до ширины дополнительного представления, как показано ниже NSAlert и дополнительное представление

Также при удалении вспомогательного вида три кнопки не выровнены правильно по правому краю

Как решить эту проблему?Я не хочу заменять NSAlert написанием кода сам, почему я должен изобретать велосипед?

Код, который я использую, скопирован setAccessoryView и приведенная ниже

родовое слово
Это было полезно?

Решение

Это текущий макет оповещения по умолчанию. Предупреждение с тремя кнопками обрабатывается по-разному, потому что его общий вариант использования:

  • Первая кнопка (например, "ОК") представляет собой подтверждение.
  • Вторая кнопка (например, "Отмена") означает отмену.
  • Третья кнопка (например, «Убить пингвина») представляет собой альтернативное действие, потенциально разрушительное.

Третья кнопка расположена слева, чтобы было понятно, что она представляет собой действие, отличное от действия (первая кнопка) и остановки (вторая кнопка).

Это можно увидеть в некоторых приложениях Apple. На страницах:

введите описание изображения здесь

В TextEdit:

введите описание изображения здесь

Также в документации NSAlert говорится, что:

<цитата>

Стандартный формат предупреждений может быть изменен в будущих версиях системного программного обеспечения. Поэтому, если вы полагаетесь на настраиваемый макет предупреждений, вы должны убедиться, что ваши макеты работают должным образом в будущих выпусках Mac OS.

Таким образом, в будущем они могут решить выровнять все три кнопки по правому краю или только первую кнопку по правому краю и две оставшиеся кнопки по левому краю. Это объясняет, почему NSAlert не предоставляет общедоступный API для определения положения или выравнивания его кнопок.

Если вам действительно нужен другой макет, похоже, вам придется разработать его самостоятельно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top