Cocoa Objective C - 当用户按Enter键或单击侧面文本框时,如何结束NSTextField的编辑

时间:2009-11-13 06:26:17

标签: objective-c

我在GUI上创建了两个cocoa控件。 NSButton和NSTextField。当用户点击按钮时,将执行按钮处理程序。它将使按钮禁用并启用NSTextField。在结束编辑时,文本字段字符串将显示为按钮标题。

button click
{
 - Make button visible = false;
 - Make text field visible = true;
 - Text field allow selection = true;
 - text field allow editing = true;
}

control text end editing
{
  - text field allow selection = false;
  - text field allow editing = false;
  - Set button title as text field string;
  - Set text field visible = false;
  - Set button visible = true;
}

我已经写了两个函数来实现这个功能。当用户按下Tab键时,我将获得所需的功能,因为视图切换到下一个视图。但是,我想要的是,一旦用户在文本字段中输入所需文本,他就可以按Enter键或单击文本字段外部以结束编辑。

在结束编辑时,应关闭文本字段并将文本显示为按钮标题。

请告知我们如何实现此功能。任何帮助将不胜感激。

提前致谢...

2 个答案:

答案 0 :(得分:1)

我将对象作为NSTextField的委托,然后实现委托方法:

- (void)controlTextDidEndEditing:(NSNotification *)aNotification
{
   - text field allow selection = false;
   - text field allow editing = false;
   - Set button title as text field string;
   - Set text field visible = false;
   - Set button visible = true;
}

我相信这会捕获您点击输入的位置和标记位置。

答案 1 :(得分:0)

当用户按下Enter键时:

实施NSTextFieldDelegate并附加到文本字段。 实现委托方法:

- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector {
    if (commandSelector == @selector(insertNewline:)) {// @selector(cancelOperation:) for esc clicked
        [self.view.window makeFirstResponder:nil];
    }

    return NO;
}


用户在框外单击时:

检查我的https://github.com/shannonmoeller/handlebars-group-by,了解如何在框外单击时结束编辑。