NSTextField是FirstFirstResponder

时间:2013-06-30 17:07:38

标签: macos cocoa nstextfield

我正在尝试执行我认为在Cocoa中非常简单的任务(Mac OSX 10.8),即将剪贴板中的字符串粘贴到NSTextField中。

我知道如何访问剪贴板中当前保存的字符串,但我目前的问题是我无法确定我的UI中的3个文本字段中的哪一个已被选中。

尝试1:

当执行'paste'命令时,询问每个文本字段'你是否被选中?',从iOS开发,我会这样做[aTextField isFirstResponder],但这个方法在NSTextField上不存在,我不能找到一个等价物。

尝试2:

当选择3个NSTextField中的任何一个时,将该TF存储为“活动”字段,当用户选择粘贴时,将字符串粘贴在那里。这里的问题是,如果我将控制器设置为文本字段的委托,并实现:

-(void)controlTextDidBeginEditing:(NSNotification *)obj {}

这仅在用户编辑文本时调用,而不是在他们只选择它时调用(通常在用户想要粘贴到顶部时发生),所以在这种方法中,我仍然不知道哪个文本当前已选择字段,因此粘贴文本的位置。

有谁知道如何为mac OSX寻求这个简单的任务?我想要做的就是允许用户将剪贴板中的一些文本粘贴到文本字段中!?

1 个答案:

答案 0 :(得分:0)

您可以使用-[NSWindow firstResponder]从窗口中找到第一个响应者。然后,您可以发送paste:动作。这就是编辑菜单中标准粘贴项的工作方式。