私はストーリーボードに2つのNSTextField
を持っていますが、どちらもクラスをサブクラスに変更した以外はデフォルト設定から変更されません。私はまた内部をサブクラス化しましたNSTextFieldCell
。私はそれぞれ好みのものをカスタマイズしました。かなりシンプルなサブクラスです。最初の応答者であるテキストフィールドは期待どおりに表示されますが、他のテキストフィールドでは表示されません。そのセルのための白い背景を描いています。 2つのフィールドを切り替えると背景が切り替わります。この白い背景をセルから削除するにはどうすればよいですか?NSTextFieldCellは、最初のレスポンダでない場合にのみ白い背景を描画します
LoginTextField
:
- (void)baseInit {
self.drawsBackground = NO;
self.wantsLayer = YES;
self.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.75];
self.textColor = [NSColor blackColor];
CALayer *layer = [[CALayer alloc] init];
layer.backgroundColor = self.backgroundColor.CGColor;
layer.borderWidth = 0;
layer.cornerRadius = 6;
self.layer = layer;
}
LoginTextFieldCell
:私はこの関数をオーバーライドする場合
- (void)baseInit {
self.drawsBackground = NO;
self.focusRingType = NSFocusRingTypeNone;
}
は、白い背景が消えますが、そうしないときに最初のプレースホルダやテキストラベルを行います応答者。
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
return [super drawInteriorWithFrame:cellFrame inView:controlView];
}
私はOS Xエルキャピタン上で実行して、Xcodeの7のアプリを開発しています。また、この問題を見た人のため