Я думаю, что это просто невозможно с NSFormCell.
Первое, что я попробовал:
self.form.drawsCellBackground = YES;
self.form.cellBackgroundColor = [NSColor redColor];
Похоже, что фон нарисован только за меткой.Некоторое дальнейшее тестирование показало, что один NSFormCell охватывает как метку, так и текстовое поле, а фон рисует позади обоих.Когда текстовое поле отображается сверху, его собственный фон покрывается красным цветом.
Далее я подклассифицирую NSFormCell.Единственный вызываемый метод - -drawWithFrame:inView:
.Рамка, опять же, охватывает как метку, так и текстовое поле.Контрольный вид - NSForm.Если я рисую свой собственный фон и затем вызываю [super drawWithFrame:inView:]
, он выглядит так же, как и выше, видимый за меткой, но не видимый за текстовым полем.Если я вызываю super, а затем рисую фон, он появляется поверх обоих.
Реализация NSFormCell не вызывает -drawInteriorWithFrame:inView:
и, похоже, не предоставляет другую точку переопределения.
Я попытался установить highlighted
и реализация -highlightColorWithFrame:inView:
- та же проблема.
Пока я пытался понять, как все это работает, я также пытался создать подкласс NSForm.Единственный вызванный метод рисования - -drawRect:
.Эти методы никогда не вызываются: -drawCellAtIndex:
, -drawCellAtRow:column:
, -drawCell:
, -drawCellInside:
.
Помимо того, что Apple пытается это исправить, единственные решения, которые я вижу, пытаются использовать суперкласс NSForm NSMatrix, илипросто используя метки и текстовые поля.