我有一个带有可编辑的 NSViewNSTextField
和多个其他子视图,如 NSView、NSSlider、NSImage 等。
- 在我将文本输入到可编辑的NSTextField并单击任何其他视图后,移动滑块等。我希望我的 NSTextField 失去焦点。我试过打电话给
resignFirstResponder
,但这似乎不起作用。我怎样才能做到这一点? - 当我在NSTextField中标记文本时,会显示文本后面的蓝色背景。我怎样才能改变颜色是这个?
我有一个带有可编辑的 NSViewNSTextField
和多个其他子视图,如 NSView、NSSlider、NSImage 等。
resignFirstResponder
,但这似乎不起作用。我怎样才能做到这一点?假设您有一个名为 clickView1.h 的 NSView 子类。参考这篇文章,您可以通过以下方式实现您的第一目标。
- (void)mouseDown:(NSEvent *)event{
AppDelegate *appDelegate = (AppDelegate *)[NSApp delegate];
[appDelegate.window makeFirstResponder:nil];
}
至于2号,我不明白这个问题。
对于问题 1,我同意 BlueTomato 的观点,即您需要做其他事情 first responder,而不是 call resignFirstResponder
。对于问题 2,子类NSTextFieldCell
,并在子类中,有一个这样的覆盖:
- (NSText *)setUpFieldEditorAttributes:(NSText *)textObj
{
[super setUpFieldEditorAttributes: textObj];
if ([textObj isKindOfClass: [NSTextView class]])
{
NSTextView* textView = (NSTextView*) textObj;
[textView setSelectedTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSColor redColor],
NSBackgroundColorAttributeName,
nil] ];
}
return textObj;
}
尝试以下方法:
[[NSApp mainWindow] performSelector:@selector(resignFirstResponder:)
withObject:yourTextfield
afterDelay:0.0];