撤消 makeFirstResponder

Undo makeFirstResponder

我想要一个 NSTextField 来防止空字符串,所以我将 NSTextField 子类化并实现了这个方法

-(void) textDidEndEditing:(NSNotification *)aNotification
{
  if([[self stringValue] isEqualToString:@""])
  {
    NSBeep();
   [[self window] makeFirstResponder:self];
  }
  else
  {
    //what goes here
  }
}

当我的新文本字段是 window 中的第二个控件而不是第一个控件时,此方法有效。在那些情况下,即使其文本非空,我也无法跳出子类文本字段

那么,如何撤消 makeFirstResponder 方法?或者有没有办法让新的文本字段成为 current responder

提前致谢

笨蛋。

当您重写基本函数时,您应该只需要回调 super 以使正常行为继续。

-(void) textDidEndEditing:(NSNotification *)aNotification
{
  if([[self stringValue] isEqualToString:@""])
  {
    NSBeep();
   [[self window] makeFirstResponder:self];
  }
  else
  {
    //what goes here - this:
    [super textDidEndEditing:aNotification];
  }
}