我在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键或单击文本字段外部以结束编辑。
在结束编辑时,应关闭文本字段并将文本显示为按钮标题。
请告知我们如何实现此功能。任何帮助将不胜感激。
提前致谢...
答案 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,了解如何在框外单击时结束编辑。