当NSTextField在没有子类化的情况下重新启动第一响应者状态时收到通知

时间:2012-11-19 22:52:07

标签: macos cocoa nstextfield first-responder

我有NSTextField我添加到自定义视图的视图层次结构中,并设置用户在该自定义视图中单击的位置。

如果文本字段取消第一响应者状态,例如因为用户已在窗口中的另一个NSTextField内单击,我需要获取其值并再次从视图层次结构中删除它。

我的自定义视图如何通知NSTextField它拥有的第一响应者状态,而不必为了这个目的而继承此文本字段?

NSTextFieldDelegate方法control:textShouldEndEditing:不会这样做,因为只有当用户在文本字段中实际编辑某些内容时才会调用它。如果用户没有在其中进行任何编辑,我还需要隐藏文本字段。

2 个答案:

答案 0 :(得分:3)

NSTextField失去焦点可以通过以下方式捕获:

- (void)controlTextDidEndEditing:(NSNotification *)aNotification

答案 1 :(得分:0)

还有一个委托方法可以做同样的事情: -

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command
{
    if (command==@selector(insertTab:) || (command==@selector(insertBacktab:)))
    {
      //Your Code
    }
    return YES;
}

注意: - 它仅适用于tab和backTab键