2014-09-11 2 views
0

У меня есть NSTextField с закругленными углами, порожденных подклассов NSTextFieldCell и преимущественнуюИзменение формы NSTextField кольца фокусировки

(пустоты) drawWithFrame: (NSRect) cellFrame INview: (NSView *) ControlView

Со следующим

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { 

    controlView.layer.cornerRadius = cellFrame.size.height/2; 
    [super drawInteriorWithFrame:cellFrame inView:controlView]; 
} 

Это похоже на работу отлично, однако, когда текстовое поле является первым ответчиком, кольцо фокусировки по-прежнему появляется как прямоугольник угол форма. Возможно ли изменить кольцо фокусировки на соответствие форме NSTextField?

ответ

1

Да, я сделал это; Однако это было время, так что это может занять несколько правок :)

Я считаю, что у вас есть 2 вариант:

  1. Вы можете установить focusRingType в NSFocusRingTypeNone то после [super drawInteriorWithFrame:] вы можете сделать свое собственное кольцо фокусировки с помощью что-то [NSBezierPath bezierPathWithRoundedRect:].
  2. Вы можете переопределить собственный метод (я думаю) _drawFocusRingWithFrame

в любом случае вы будете чертеж кольца самостоятельно, но эта часть очень легко. Если вы хотите, чтобы цвет кольца фокуса системы использовал [NSColor keyboardFocusIndicatorColor] для цвета штриха вашего пути.

10.7 или более поздняя версия: drawFocusRingMaskWithFrame по телефону NSCell.

2

Вы можете переопределить - (void)drawFocusRingMaskWithFrame:inView: и сделать свой собственный в NSTextFieldCell

Это должно быть довольно легко сделать, создавая путь с рамкой вашего зрения и добавив некоторые радиус закругления. Не забудьте использовать [NSColor keyboardFocusIndicatorColor], чтобы он соответствовал цвету выбора пользователя.

Смежные вопросы