NicerTouchBar 包含用于 NSTouchBar
/NSTouchBarItem
验证的实用工具,以及一些方便的方法来影响 NSTouchBar
的行为/设置。
虽然我们有 NSMenuItemValidation
和 NSUserInterfaceValidations
,但截至 10.15,NSTouchBar
并没有一个好的验证系统。 这个库引入了一个 TouchBarItemValidations
协议,该协议在触控栏验证过程中首先被检查。 作为回退方案,如果适用,则会检查 NSUserInterfaceValidations
。
public protocol TouchBarItemValidations {
@available(OSX 10.12.2, *)
func validateTouchBarItem(_ item: NSTouchBarItem) -> Bool
}
验证是依赖于 NSTouchBarItem
子类的。 目前,支持 NSGroupTouchBarItem
和 NSPopoverTouchBarItem
。 如果 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()
}
}
有时您需要覆盖窗口的默认触控栏。 您可以使用 NSViewController
上的一个方便的扩展,而无需修改绑定。
deinit {
restoreParentWindowTouchBar()
}
override func viewWillAppear() {
super.viewWillAppear()
becomeParentWindowTouchBarProvider()
}
dependencies: [
.package(url: "https://github.com/ChimeHQ/NicerTouchBar")
]
我们很乐意收到您的来信! 通过 issue 或 pull request 与我们联系。
请注意,此项目已发布 贡献者行为准则。 参与此项目即表示您同意遵守其条款。