Build Status Platforms

NicerTouchBar

NicerTouchBar 包含用于 NSTouchBar/NSTouchBarItem 验证的实用工具,以及一些方便的方法来影响 NSTouchBar 的行为/设置。

验证

虽然我们有 NSMenuItemValidationNSUserInterfaceValidations,但截至 10.15,NSTouchBar 并没有一个好的验证系统。 这个库引入了一个 TouchBarItemValidations 协议,该协议在触控栏验证过程中首先被检查。 作为回退方案,如果适用,则会检查 NSUserInterfaceValidations

public protocol TouchBarItemValidations {
    @available(OSX 10.12.2, *)
    func validateTouchBarItem(_ item: NSTouchBarItem) -> Bool
}

验证是依赖于 NSTouchBarItem 子类的。 目前,支持 NSGroupTouchBarItemNSPopoverTouchBarItem如果 NSCustomTouchBarItem 的 view 属性是 NSControl 的子类,则也支持 NSCustomTouchBarItem

触发验证

由于此验证不是由系统提供的,因此您需要做一些工作来将其连接起来。 您可以直接在 NSTouchBar 上使用 validate 方法。 这是手动的,但效率很高,特别是如果您的验证需求很简单。

一种更巧妙的方法是挂钩到 NSWindow/NSApplication 的 didUpdateNotification。 这为您提供了一种简单的方法,可以在窗口/应用程序处理事件时自动运行验证。

并且,为了方便起见,还有一些函数/扩展使手动验证更容易。

class MyViewController: NSViewController {
    func myFunction() {
        // this can be called safely before 10.12.2
        validateTouchBar()
        // or (cannot be called before 10.12.2)
        touchbar?.validate()
    }
}

覆盖窗口的 TouchBar

有时您需要覆盖窗口的默认触控栏。 您可以使用 NSViewController 上的一个方便的扩展,而无需修改绑定。

deinit {
    restoreParentWindowTouchBar()
}

override func viewWillAppear() {
    super.viewWillAppear()

    becomeParentWindowTouchBarProvider()
}

安装

dependencies: [
    .package(url: "https://github.com/ChimeHQ/NicerTouchBar")
]

建议或反馈

我们很乐意收到您的来信! 通过 issue 或 pull request 与我们联系。

请注意,此项目已发布 贡献者行为准则。 参与此项目即表示您同意遵守其条款。