在没有特定 NSTouchBar 支持的情况下创建 NSTouchBar 后,我可以将它附加到 NSWindow 吗?

Can I attach an NSTouchBar to an NSWindow after it's been created with no specific NSTouchBar support?

我正在使用 SDL 创建一个 window 用于 OpenGL,它返回的唯一信息是 NSWindow 对象。

我可以使用它随后将 NSTouchBar 与那个 window 相关联吗?

我已经通过直接修改 SDL 代码在 ViewController 中成功完成了它,但是作为库 API 的用户,我无法使用该选项。

我之前认为我可以通过客户 NSResponder 来实现,但我不再相信这是一个有效的选择。

谢谢。

创建 NSWindowController 并将其附加到现有 window 有效。

@interface WindowController : NSWindowController <NSTouchBarDelegate>

- (id)init:(NSWindow *) nswindow
{
    self = [super initWithWindow:nswindow];
    return self;
}

- (NSTouchBar *)makeTouchBar
{
        NSTouchBar *bar = [[NSTouchBar alloc] init];
        bar.delegate = self;
        bar.customizationIdentifier = PopoverCustomizationIdentifier;
        bar.defaultItemIdentifiers = @[PopoverItemIdentifier, NSTouchBarItemIdentifierOtherItemsProxy];
        bar.customizationAllowedItemIdentifiers = @[PopoverItemIdentifier];
        bar.principalItemIdentifier = PopoverItemIdentifier;
        return bar;
}

您可以查看 https://developer.apple.com/library/content/samplecode/NSTouchBarCatalog/Listings/Objective_C_NSTouchBar_Catalog_TestViewControllers_PopoverViewController_m.html 以获得更多的胆量来放入这些函数。