Кнопка NSButton по умолчанию с голубым взглядом
У меня есть диалог с 1 или более кнопками и вы хотите иметь возможность программно установить самый правый из них по умолчанию, так что, когда пользователь нажимает клавишу Enter или Return, он должен отвечать так, как если бы пользователь нажал на него.
Я использую [btn setKeyEquivalent:@"\r"]
, и это заставляет его работать нормально, но я хочу, чтобы кнопка имела синеватый вид, которого не происходит. Что мне нужно сделать?
Ответы
Ответ 1
Мне не хватало, чтобы правильно настроить стиль панели управления и почему он выглядел неправильно. Теперь я устанавливаю кнопку следующим образом:
[btn setBezelStyle:NSRoundedBezelStyle];
Затем любая из этих функций устанавливает кнопку по умолчанию:
[myWindow setDefaultButtonCell:[btn cell]];
или
[btn setKeyEquivalent:@"\r"]
Ответ 2
В документации написано:
Обратите внимание, что если вы установите эквивалент ключа Return, эта кнопка станет кнопкой по умолчанию.
Таким образом, вы делаете это правильно. Вы можете попробовать это после установки эквивалента ключа:
[button setNeedsDisplay:YES];
Это заставляет кнопку перерисовывать себя.
Ответ 3
[myWindow setDefaultButtonCell:[btn cell]]; // should do the trick.
Подробнее см. документацию Apple.
Ответ 4
Моя настройка была настраиваемой линией, где я хотел, чтобы кнопка по умолчанию отображалась как в NSAlert. Следующая конфигурация дает мне синий по умолчанию внешний вид. Работает в 10.12.3 г. Сьерра.
button.bezelstyle = NSBezelStyleRounded; // Push in Interface Builder
button.keyEquivalent = @"\r";
button.highlighted = YES; // this is the most important part.