【问题标题】:NSTextView - How to detect when it is clicked?NSTextView - 如何检测它何时被点击?
【发布时间】:2013-10-28 22:29:34
【问题描述】:

我正在尝试这样做:

- (IBAction)textFieldSelected:(id)sender
{
    printf("clicou no text\n");
}

我通过 Interface Builder 将它“连接”到我的 NSTextField。

当我第一次启动应用程序时,这个 NSTextField 已经聚焦。然后我点击第二个 NSTextField,我的第一个失去焦点,我得到了打印语句。在这些 NSTextField 之间来回单击,我看到当我单击未附加到它的 NSTextField 时才调用打印语句。我相信它只会在第一个失去焦点时发生。

Q1:当使用点击 NSTextField(当它获得焦点时)时,我该如何做这个打印语句?

Q2:如何避免应用启动时自动获取焦点?

【问题讨论】:

  • 看看 NSTextFieldDelegate 的委托方法。 NSControlTextEditingDelegate.
  • control:textShouldBeginEditing: “当用户尝试在允许编辑文本的控件的单元格中输入字符时调用(例如文本字段或表单字段)。”这不是我的情况:/
  • 您可以覆盖 (BOOL)becomeFirstResponder 并在其中发布通知。请务必返回 YES。
  • 你是说每次点击这个视图都会调用这个方法?我认为应该只在初始化时调用此方法。

标签: objective-c macos cocoa nstextfield


【解决方案1】:

创建 NSTextfield 的自定义类,然后实现下面的方法,这样每当焦点转到文本字段时,下面的方法就会被调用:-

   -(Bool)becomeFirstResponder{
     return YES}

【讨论】:

  • 执行此操作后,我无法再拖动一个连接,该连接将从 NSTextField 继承的类链接到 .xib 文件中的 NSTextField 元素。 ://
  • 转到 xib 中文本字段的身份检查器。将其类更改为您的自定义类。
  • 我爱你,伙计。顺便说一句,当我的应用程序启动时,NSTextView 会自动获得焦点,有人知道如何避免它,以便我可以在用户点击它时获得焦点吗?
  • 尝试返回 [super becomeFirstaresponder] 尽管返回 YES 并检查??
  • 我刚刚做到了:点击 .xib,进入 Interface Builder > 选择您的 NSTextView > 显示属性检查器 > 控制 > 状态:检查拒绝第一响应者
猜你喜欢
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
相关资源
最近更新 更多