NSTokenField完成列表样式

时间:2013-06-18 09:55:40

标签: objective-c macos cocoa rubymotion

我是OSX开发的初学者,所以我希望我的问题能在这里找到解决方案。

我的应用中有NSTokenField,我实施了tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:方法。

一切正常,但目前的结果如下:

enter image description here

我想要的是使它看起来像这样:(类似于Mail应用程序中的完成)

enter image description here

这意味着我希望完成列表获取所有NSTokenField宽度。 使用辅助功能检查器,我可以看到与第一个sreenshot对应的层次结构是:

AXScrollArea -> AXList -> AXTextField

,而第二个屏幕截图对应的是:

AXScrollArea -> AXTable -> AXRow:AXTableRow -> AXTextField

所以我想我必须使用NSTableView来显示完成列表,但我不知道如何实现这一目标。有谁知道这怎么可能?

提前感谢您的帮助。

修改

至少有2人建议我实施tokenField:menuForRepresentedObject:方法,并使用相应的NSMenu属性定义菜单宽度。但是这个方法用于定义给定令牌的菜单,我已经实现了它:

  def tokenField(tokenField, menuForRepresentedObject:representedObject)
    theMenu = NSMenu.alloc.initWithTitle("Email address context menu")
    item_0 = theMenu.insertItemWithTitle('add_to_address_book'.localized, action:'add_to_address_book', keyEquivalent:"", atIndex:0)
    item_0.setTarget(self)
    item_1 = theMenu.insertItemWithTitle('new_message'.localized, action:'new_message', keyEquivalent:"", atIndex:1)
    item_1.setTarget(self)
    theMenu
  end

这给了我这样的东西:

tokenField:menuForRepresentedObject:

好的东西,但不是我在这里问的。

0 个答案:

没有答案