NSTextFieldにバグがあるようです。アプリケーションを起動すると、すべてが正しく描画されます。しかし、textFieldをクリックするとすぐに、ビューがめちゃくちゃになります。より具体的には、私drawRect:
がタイプするときはいつでも呼び出されますが、より小さなrectですべての問題を引き起こします。
テキストを選択すると、再び正しく描画されます。唯一の解決策は、FocusRingType
を表示に設定することです(例:) NSFocusRingTypeDefault
。でもリングなしで欲しいです。これは可能ですか?
これが私が使用しているコードです:
-(id)initWithFrame:(NSRect)frameRect
{
self = [super initWithFrame:frameRect];
if(self)
{
// Add a label
NSTextField *textField = [[NSTextField alloc] initWithFrame:CGRectMake(0, 0, frameRect.size.width, frameRect.size.height)];
[[textField cell] setPlaceholderString:@"URL or search term..."];
[textField setTextColor:[NSColor greyColor]];
[textField setBackgroundColor:[NSColor clearColor]];
[textField setFont:[NSFont fontWithName:@"Open Sans" size:20]];
[textField setDrawsBackground:FALSE];
[textField setBordered:FALSE];
[textField setFocusRingType:NSFocusRingTypeNone];
[self addSubview:textField];
}
return self;
}
-(void)drawRect:(NSRect)dirtyRect
{
NSInteger borderWdith = 2;
// Create the path to the button
NSBezierPath *aPath = [NSBezierPath bezierPathWithRoundedRect:CGRectMake(borderWdith, borderWdith,
dirtyRect.size.width-(borderWdith*2),
dirtyRect.size.height-(borderWdith*2))
xRadius:3 yRadius:3];
// Fill the button with white
[[NSColor whiteColor] set];
[aPath fill];
}
TRUE
drawRectで/に編集可能な設定のようなトリックFALSE
は機能しませんでした。また、メソッドで別のfocusRingTypesに設定できませんでした。