我有一个带有可编辑NSTextField
的NSView以及NSView,NSSlider,NSImage等多个其他子视图。
resignFirstResponder
,但这似乎不起作用。我怎么能这样做?答案 0 :(得分:9)
假设您有一个名为clickView1.h的NSView子类。参考this post,您可以按照以下方式在第1号中实现目标。
- (void)mouseDown:(NSEvent *)event{
AppDelegate *appDelegate = (AppDelegate *)[NSApp delegate];
[appDelegate.window makeFirstResponder:nil];
}
至于第2号,我不明白这个问题。
答案 1 :(得分:3)
对于问题1,我同意BlueTomato您需要做出其他第一响应者,而不是致电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;
}
答案 2 :(得分:0)
尝试以下方法:
[[NSApp mainWindow] performSelector:@selector(resignFirstResponder:)
withObject:yourTextfield
afterDelay:0.0];