NicerTouchBar includes useful utilities for NSTouchBar/NSTouchBarItem validation, as well as some convenience methods for influencing NSTouchBar behavior/setup.
Validation
While we have NSMenuItemValidation and NSUserInterfaceValidations, as of 10.15, NSTouchBar doesn’t have a good validation system. This library introduces a TouchBarItemValidations protocol, which is checked first during the touch bar validation process. As a fallback, NSUserInterfaceValidations is checked if appropriate.
Validation is NSTouchBarItem-subclass dependent. Currently, NSGroupTouchBarItem and NSPopoverTouchBarItem are supported. NSCustomTouchBarItem is supported if its view property is a subclass of NSControl.
Triggering Validation
Because this validation isn’t provided by the system, you have to do some work to wire it up. You can just use the validate method on NSTouchBar directly. This is manual, but can be efficient, especially if your validation needs are simple.
A fancier way is to hook into NSWindow/NSApplication’s didUpdateNotification. This gives you a easy way to run your validation automatically as the window/app processes events.
And, as a convenience, there are a few functions/extensions that make it easier to manually validate.
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()
}
}
Overriding a Window’s TouchBar
It sometimes happens that you need to override a window’s default touch bar. Instead of messing with binding, you can use a handy extension on NSViewController.
NicerTouchBar
NicerTouchBar includes useful utilities for
NSTouchBar
/NSTouchBarItem
validation, as well as some convenience methods for influencingNSTouchBar
behavior/setup.Validation
While we have
NSMenuItemValidation
andNSUserInterfaceValidations
, as of 10.15,NSTouchBar
doesn’t have a good validation system. This library introduces aTouchBarItemValidations
protocol, which is checked first during the touch bar validation process. As a fallback,NSUserInterfaceValidations
is checked if appropriate.Validation is
NSTouchBarItem
-subclass dependent. Currently,NSGroupTouchBarItem
andNSPopoverTouchBarItem
are supported.NSCustomTouchBarItem
is supported if its view property is a subclass ofNSControl
.Triggering Validation
Because this validation isn’t provided by the system, you have to do some work to wire it up. You can just use the
validate
method onNSTouchBar
directly. This is manual, but can be efficient, especially if your validation needs are simple.A fancier way is to hook into NSWindow/NSApplication’s
didUpdateNotification
. This gives you a easy way to run your validation automatically as the window/app processes events.And, as a convenience, there are a few functions/extensions that make it easier to manually validate.
Overriding a Window’s TouchBar
It sometimes happens that you need to override a window’s default touch bar. Instead of messing with binding, you can use a handy extension on
NSViewController
.Installation
Suggestions or Feedback
We’d love to hear from you! Get in touch via twitter, an issue, or a pull request.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.