如何在外部单击时将注意力集中在NSTextField上

dhr*_*hrm 4 cocoa objective-c nstextfield

我有一个NSView,带有可编辑的NSTextField多个子视图,如NSView,NSSlider,NSImage等.

  1. 在我将文本输入可编辑的NSTextField并单击任何其他视图后,移动滑块等.我希望我的NSTextField失去焦点.我试着打电话给resignFirstResponder,但这似乎不起作用.我怎样才能做到这一点?
  2. 当我在NSTextField中标记文本时,会显示文本后面的蓝色背景.我该如何改变颜色呢?

El *_*ato 9

假设您有一个名为clickView1.h的NSView子类.在参考这篇文章时,您可以按照以下方式在第1号中实现目标.

- (void)mouseDown:(NSEvent *)event{
    AppDelegate *appDelegate = (AppDelegate *)[NSApp delegate];
    [appDelegate.window makeFirstResponder:nil];
}
Run Code Online (Sandbox Code Playgroud)

至于第2号,我不明白这个问题.

  • 而不是寻找一个app委托,说"[[self window] makeFirstResponder:nil]`似乎更简单. (6认同)
  • self.window会返回窗口,该视图是绑定的,而不是当前窗口.所以,self.window是正确的,appDelegate.window是不正确的,因为它可能是你的应用程序的另一个窗口. (2认同)