Как остановить выбор моей кнопки NS при запуске приложения по умолчанию? - PullRequest
7 голосов
/ 26 апреля 2011

Я создал кнопку, и возникла небольшая проблема: когда запускается мое приложение, кнопка выбирается.Как отключить этот выбор?

Пример:

A window with two buttons. The first (left) has a blue glow around it, and the second (right) does not.

Ответы [ 3 ]

7 голосов
/ 26 апреля 2011

Предостережение: Этот ответ неполон: он просто скрывает кольцо фокусировки (не препятствуя выбору). В этом решении мало пользы.

Установите тип кольца фокуса кнопки на none:

[myButton setFocusRingType:NSFocusRingTypeNone];

Вы также можете установить эту опцию в XIB.

4 голосов
/ 23 августа 2016

Во-первых, вы должны знать, что по умолчанию кнопки не могут получить фокус. Пользователь должен был выбрать Системные настройки> Клавиатура> Сочетания клавиш> Полный доступ с клавиатуры: все элементы управления. Если они это сделали, они могут хотеть кнопку, чтобы изначально иметь фокус.

В любом случае, правильный способ сделать это - позвонить [theWindow makeFirstResponder:nil] через некоторое время после его показа в первый раз. Когда это сделать, зависит от того, как именно будет показано окно. Если вы показываете это явно в коде, то вы можете сделать вызов сразу после этого. Если он отображается потому, что в его NIB установлен флаг Visible at Launch, то вы сделаете это после загрузки NIB. И т.д.

2 голосов
/ 21 октября 2016

Что-то всегда должно быть первым респондентом в окне, если что-нибудь может быть.Обычно только несколько элементов управления, таких как текстовые поля, могут стать первым респондентом, но когда у пользователя включен полный доступ с клавиатуры, кнопка по умолчанию выбирается по умолчанию.

Если вам не нужна эта конкретная кнопкачтобы начать выделение, установите initialFirstResponder в окне другого элемента управления.

Я бы рекомендовал не использовать -[NSWindow makeFirstResponder:nil].Окно начнется с ничего не выделенного, но кнопка станет выделенной, как только пользователь нажмет на вкладку.Это необычно для приложений Mac, поскольку пользователь не может вернуть окно в состояние «ничего не выбрано» как пользователь.

...