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

标签 objective-c macos cocoa nstokenfield

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

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

As I type A

我滚动它

enter image description here

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

enter image description here

这是所有 TableView 的行为。行后面的 View 是可见的,但它会自动弹回正常位置。但在这种情况下不是。

Mail 应用程序中没问题,它工作正常。

我的实现是:

  1. 创建了一个NSTokenField

  2. 将其委托(delegate)设置为 AppDelegate。

  3. 在实现文件中

     -(NSArray *)tokenField:(NSTokenField *)tokenField completionsForSubstring:(NSString *)substring indexOfToken:(NSInteger)tokenIndex indexOfSelectedItem:(NSInteger *)selectedIndex{
        return @[@"A",@"B",@"C"];
    }
    

即使是 sample code from apple documentation行为不正确。

如何让它自动弹出或通过一些代码限制?

最佳答案

您在 Mail.app 中看到的不是实际的 NSMenu(Apple 作弊,令人震惊!)。事实证明,它实际上是一个自定义的 NSTextField 链接到卡在透明窗口中的 NSTableView。

F-Scripting FTW

绕过极差版本的 scrollWheel: 是一个相当古老的技巧NSMenu 恰好已经实现。 MTTokenField是拉扯你的头发试图在 NSMenu 中粘贴 ScrollView 的成熟替代方法。

关于objective-c - NSTokenField 选择列表在滚动时显示空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715283/

相关文章:

ios - 在呈现另一个 View Controller 时,如何阻止 "from" View 变黑?

swift - macOS 上的 kIOPSCurrentCapacityKey 是否有等效的电池电量更改通知?

xcode - 如何从 OS X 上的框架实例化 NSViewController(即获取正确的包)

objective-c - 直接从代码创建NSView

ios - 使用 AVFoundation 将自定义元数据添加到视频

objective-c - 如何在等待 NSURL 连接完成时阻止 objective-c 方法的执行?

c++ - Windows 上的 Objective C

swift - 在没有预览窗口的情况下使用 AVCaptureVideoDataOutputSampleBufferDelegate

java - MacOS X Java 专用 API 中的“ secret 武器” - 请求了解更多详细信息

swift - 如何从 Cocoa 应用程序运行 Automator 工作流/服务?