Это давно известная проблема - в списке рассылки Cocoa-dev еще в 2008 году упоминалось упоминание . На самом деле кольцо фокуса рисуется за пределами рамки его представления.Рисование NSView разрешено, но не работает с CALayers.Несмотря на обнадеживающую заметку в заметках о выпуске Leopard AppKit , называемых Представления, кольца фокусировки и производительность рисования , это не изменилось.вокруг с текстовыми полями рамок слоев и добавьте некоторые отступы, чтобы кольцо фокусировки показывалось полностью.Тем не менее, я только что попробовал это, и кажется, что, по крайней мере, для NSTextField, он не будет аккуратно рисовать внутри измененного фрейма.Попробуйте, однако, - я не суетился с этим слишком долго.(Кольцо фокусировки проходит на 4 пикселя от рамки в каждом направлении.)
Как примечание, вы технически нарушаете правила на основе слоев, что может быть причиной того, что у вас возникают трудности.От NSView setWantsLayer:
документы :
При использовании представлений со слоем никогда не следует напрямую взаимодействовать со слоем.
Вы используете вид со слоем и меняете его фон.Вы можете обойти это, создав собственный слой, но:
При использовании вида размещения слоев вы не должны полагаться на представление для рисования и не должны добавлять подпредставления к слою.-хостинг-представление.
, исключающее размещение текстовых полей в представлении.
(При необходимости обратитесь к этому вопросу SO: Разница между Layer-Backed иLayer-Hosting Views? )