NSTextField isFirstResponder

Posted

技术标签:

【中文标题】NSTextField isFirstResponder【英文标题】: 【发布时间】:2013-06-30 17:07:38 【问题描述】:

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

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

尝试 1:

当执行“粘贴”命令时,询问每个文本字段“你被选中了吗?”,来自 ios 开发者,我会这样做 [aTextField isFirstResponder],但 NSTextField 上不存在此方法,我不能找到一个等价物。

尝试 2:

When any of the 3 NSTextFields are selected, store that TF as the 'active' field, and when the user selects paste, paste the string in there.这里的问题是,如果我将控制器设置为文本字段的委托,并实现:

-(void)controlTextDidBeginEditing:(NSNotification *)obj 

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

有谁知道应该如何在 mac OSX 上完成这个简单的任务?我要做的就是允许用户将剪贴板中的一些文本粘贴到文本字段中!?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于NSTextField isFirstResponder的主要内容,如果未能解决你的问题,请参考以下文章

根据 Font/Size 改变 NSTextField 的高度

NSTextField 文本的系统颜色是啥?

NSTextField 光标位置

NSTextField,在 Swift 中更改文本

根据 NSPopupButton 中的选择更新 NSTextField

NSTextField(标签)属性文本:选择