#objective-c #cocoa #nsbutton
#objective-c #cocoa #nsbutton
Вопрос:
Всегда (программно или через IB) я получаю эту синюю тень на первой кнопке set:
Я хочу избавиться от этого .. как?
Комментарии:
1. Что вы подразумеваете под синей тенью? Вы имели в виду цвет заголовка?
2. Обратите внимание, что, удаляя кольцо фокусировки, вы также удаляете системную обратную связь о том, какое представление в данный момент получает события клавиатуры. Если вы это сделаете, рассмотрите возможность предоставления альтернативного указания.
Ответ №1:
Это называется кольцом фокусировки и предназначено для визуального указания, какое представление первым реагирует на ключевые события.
Если вы не хотите, чтобы она отображалась, вы можете использовать -[NSView setFocusRingType:]
метод с NSFocusRingTypeNone
константой. Это также можно настроить в Interface Builder.
Комментарии:
1. Это эффективно скрывает синее кольцо, но знаете ли вы какой-либо способ фактически предотвратить попадание кнопки в фокус? Я не хочу, чтобы клавиша пробела запускала мои кнопки, но одна из них попала в фокус.
Ответ №2:
Это связано с тем, как компьютер обращается к Windows с помощью клавиатуры. Подсветка уведомляет пользователя о том, что это текущий сфокусированный элемент управления.
Чтобы удалить ее из этого элемента управления, просто
[someOtherControl becomeFirstResponder];
Читать дальше: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TextEditing/Tasks/SetFocus.html
Комментарии:
1. Попробуйте
[theWindow makeFirstResponder: anotherControl];
2. Извините, я думаю, что это должно быть
[[self window] makeFirstResponder:[self window]]