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

时间:2016-11-20 07:36:29

标签: objective-c macos cocoa macos-sierra nstouchbar

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

我可以使用它随后将NSTouchBar与该窗口关联吗?

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

创建NSWindowController并将其附加到现有窗口。

@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更多的胆量放入这些功能。