撤消makeFirstResponder

时间:2015-03-23 15:52:47

标签: macos subclass nstextfield nsresponder

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

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

当我的新文本字段是窗口中的第二个控件而不是第一个控件时,这是有效的。在这些情况下,即使文本非空,我也无法跳出Subclassed文本域

那么,如何撤消makeFirstResponder方法呢?或者有没有办法让新文本字段成为当前响应者

提前致谢

stupot。

1 个答案:

答案 0 :(得分:0)

当您覆盖基本功能时,您应该只需要回拨给超级用户,以便继续正常行为。

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