NSTableCellView / NSTextField确实结束了编辑通知 - 没有更改文本?

时间:2014-11-27 08:34:57

标签: objective-c xcode cocoa nstableview nstextfield

如何在文本字段结束编辑时收到通知(按住键,在文本字段外单击,在同一列内单击,但在文本字段外等)

我检查了

- (void)textDidEndEditing:(NSNotification *)aNotification
{
   //some code here
}

但仅在文本实际更改时才会调用此通知。即使没有进行任何文本更改,我也需要收到通知。

编辑:第一个响应者已更改的某种通知也可以正常工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

观察窗口的firstResponder状态......

…
[theWindow addObserver:self forKeyPath:@"firstResponder" options:NSKeyValueObservingOptionOld context:NULL];
…

...并阅读字段编辑的代表:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
  if ([keyPath isEqualToString:@"firstResponder"])
  {
    NSResponder *oldResponder =change[NSKeyValueChangeOldKey];
    if ([oldResponder isKindOfClass:[NSTextView class]])
    {
      NSTextView *editor = (NSTextView*)oldResponder;
      NSTextField *textField = (NSTextField*)editor.delegate;
      NSLog(@"This text field lost the focus: %@", textField.identifier);
    }
  }
}