удалить синюю тень NSButton

#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]]