问题标签 [nstokenfield]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
85 浏览

objective-c - NSTokenField 指定的初始化器是什么?

我正在尝试子类NSTokenField化,我需要在初始化期间设置一些 ivars,但我无法工作我必须覆盖哪个初始化程序。文档没有说明令牌字段的指定初始化程序NSTokenFieldNSTextField继承自哪个初始化程序。

我尝试覆盖-initWithFrame:-init:但他们也没有被调用。

0 投票
1 回答
557 浏览

objective-c - 当 NSTokenField 成为第一响应者时,如何执行操作(显示弹出框)?

一旦控件获得焦点,我正在尝试子类化NSTokenField以显示NSPopover带有某些选项的菜单。不幸的是,经过几天的试探,我开始认为这是不可能的。

这是我到目前为止所尝试的:

  • -textDidBeginEditingand是无用的-controlTextDidBeginEditing,因为它们只有在用户输入第一个字母后才会被调用。我需要一些能集中注意力的东西。
  • 覆盖-becomeFirstResponder-resignFirstResponder显示和隐藏菜单或弹出框也没有用。令牌字段显然将第一响应者状态传递给私有视图 ( NSTokenFieldView),因此在关闭菜单或弹出框后立即-resignFirsttResponder被调用。-becomeFirstReponder
  • -currentEditor在关闭菜单之前,我尝试查看-resignFirstResponder. 当-currentEditor控件处于编辑模式时,它应该不为零,但不幸的是,它的值仅在-resignFirstResponder调用令牌字段后才设置,并且菜单再次立即关闭。
  • 我尝试子类化NSTokenFieldCell并覆盖其-editWithFrame:-selectWithFrame:方法,但我自定义的令牌字段NSTokenFieldCell根本没有显示,也没有报告错误或异常。

关于如何做到这一点的任何想法?有人做过吗?

0 投票
0 回答
460 浏览

objective-c - NSTokenField 弹出窗口中的建议

我正在尝试继承 NSTokenField 以显示带有令牌建议的弹出框。

我将我的子类设置为超级委托,我拦截了– tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:委托方法并返回 nil 以防止菜单显示。它工作正常,除了返回 nil 令牌字段不完成用户输入的字符串。

目前我正在使用以下几行– tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:来添加建议的字符串:

不幸的是,当我尝试在 2 个标记之间插入文本时,它会产生错误。这是错误,但我真的不明白为什么字符串越界。

或者,有没有人知道另一种让令牌字段在没有菜单的情况下完成字符串的方法?

0 投票
0 回答
319 浏览

objective-c - 自定义字段编辑器不绘图

我正在尝试继承 NSTokenField 来拦截一些键盘事件。我为 NSTokenField、NSTokenFieldCell 和 NSTextView 编写了子类。在 NSTokenField 子类中,我将常规单元格与自定义单元格交换,并在自定义单元格中覆盖 -(NSTextView*)fieldEditorForView:(NSView *)aControlView 以提供我的文本视图作为自定义字段编辑器。所有初始化方法都按预期调用,但由于某种原因,我的自定义令牌字段未绘制。

这是 NSTokenField 子类的代码:

下面是 NSTokenFieldCell 子类的代码:

添加

在进一步挖掘之后,我发现这篇文章说拥有NSTokenField自定义文本视图的唯一方法是覆盖私有方法。这是真的吗?如果是这样,有没有其他方法可以在没有子类化的情况下拦截键盘事件NSTextView

0 投票
2 回答
1402 浏览

cocoa - NSTokenField 的 tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem: indexOfToken 总是零

我已经尝试了一个简单的第一个 NSTokenField 示例,它使用基于文档的 ARC 使用应用程序,使我的 Document 类成为 NSTokenFieldDelegate。它可以工作,但有一个原因:委托方法 tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem: 只看到 indexOfToken 的值为 0,即使我成功编辑了一个不是标记字符串中第一个标记的标记。我在 OS X 10.8.2 上使用 XCode 4.5 和 10.8 框架。

问题:为什么总是0?我希望它是用户正在编辑的字段中间接看到的标记数组 0 .. n - 1 中标记的索引。

要重现,如上所述启动项目并添加以下文本,然后使用 XIB 编辑器并将 NSTokenField 拖到文档窗口上,将令牌字段设置为文档的令牌字段,并使文档实例成为令牌字段的代表。

文档.h

令牌.h

令牌.m

文档.m

令牌的输入以换行符或逗号字符终止。

0 投票
1 回答
1012 浏览

cocoa - 让 NSSearchField 使用 NSTokenFieldCell?

我正在尝试在 10.7+ 上模拟 Mail.app 和 Finder.app 的标记化搜索功能,其中看起来是一个 NSSearchField,左侧是搜索放大镜图标,右侧是取消 (x) 按钮,但是还包括搜索字段内的标记。

带有标记的 NSSearchField

有没有办法让 NSSearchField 使用 NSTokenFieldCell 而不是 NSSearchFieldCell?我尝试调用-setCell:NSSearchField 实例,该实例有效并且似乎换出了单元格,正如调用po [searchField cell]调试器所证明的那样,但是搜索字段的绘图中断并且没有绘制文本字段。

我是以正确的方式解决这个问题还是有更好的方法来做到这一点?谢谢!

2016 年10 月 25 日更新:使用 Accessibility Inspector 我发现 Finder 和 Mail 使用混合私有子类:

  • SGTSearchField : NSSearchField
    • SGTSearchFieldCell : NSSearchFieldCell
    • SGTTokenFieldCell : NSTokenFieldCell

这些是名为Suggestions.framework. 希望苹果将来会公开这些课程。如果您也想公开此功能,请务必提交雷达文件。

0 投票
1 回答
741 浏览

objective-c - 删除 NSTokenField 令牌的回调

在 NSTokenField 中,似乎在删除令牌时不存在委托方法。

我试过制作包装器代表:

对于所有者,我尝试过:

问题是:

在编辑“tokenWasDeleted”时正在调用。(那也行)。但是当我选择一个令牌然后直接删除“tokenWasDeleted”时不会调用。

任何人都可以帮助如何处理这个问题,以便我可以获得被删除的令牌的索引。

谢谢,尼拉姆维尔马

0 投票
2 回答
577 浏览

objective-c - 单击项目时关闭 NSTokenField 完成列表?

我的应用程序中有一个 NSTokenField 。当我单击完成列表中的一个建议时,我希望列表消失并完成令牌(如邮件)但是,这似乎没有发生——单击一个建议只是附加了其余的字符串并且列表不会消失。

如果我按下 Return 键,完成列表就会消失,但我也希望通过单击建议来消除它。我怎样才能做到这一点?

0 投票
1 回答
495 浏览

macos - Multiline NSTokenField display error

NSTokenField works not very well

I insert a NSTokenField into a NSView, when input has enough tokens, it turn into multiline mode, but there there is a problem with it. The top of first line gets cut off 2px and the line spacing between two line becomes too small.

Is there a way to avoid this?

0 投票
2 回答
463 浏览

objective-c - NSTokenField 选择列表在滚动时显示空白区域

使用时NSTokenField发生了一些奇怪的事情,如下图所示:

当我键入A时,会显示来自弹出窗口的选择。

当我输入 A

我滚动它

在此处输入图像描述

再滚动一些,它就到了可见区域的下方。

在此处输入图像描述

这是所有表格视图的行为。行后面的视图是可见的,但它会自动弹到正常位置。但在这种情况下不是。

邮件应用程序中很好,它工作正常。

我的实现是:

  1. 创建了一个NSTokenField.

  2. 将其委托设置为 AppDelegate。

  3. 在实现文件中

    /li>

甚至苹果文档中的示例代码也表现不正确。

如何通过某些代码使其自动弹出或限制?