NSTextField 中似乎有一个错误。当应用程序启动时,它会正确绘制。但是,只要我单击 textField,视图就会变得一团糟。更具体地说,每当我键入drawRect:
时都会被调用,但使用较小的矩形会导致所有问题。
当我选择文本时,它会再次正确绘制。唯一的解决方案是将 设置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 也失败了。