- 9.0.3
- Adds support for building with complete strict concurrency checking with Swift 5 language mode.
- 9.0.2
- Fixes a deprecation warning when building on macOS 15.
- 9.0.1
- Fixes build with Swift Package Manager.
- 9.0.0
- Xcode 15.3 or later is now required.
- Increases the macOS deployment target (for Mac Catalyst) from macOS 10.15 Catalina to macOS 11 Big Sur.
- Adds support for iOS 18 and Xcode 16.
- Adds support for building with Swift 6 language mode.
- 8.3.0
- Adds a (completely empty) privacy manifest.
- Fixes build with Swift Package Manager.
- 8.2.0
- Adds support for iOS 17 and Xcode 15. Xcode 14 is still supported.
- 8.1.0
- Adds
KeyboardMapViewto let users scroll, zoom and rotate maps using a keyboard.
- Adds
- 8.0.0
- Increases the deployment target from iOS 12 to iOS 13.
- The following deprecated UIKit APIs are no longer respected:
isModalInPopover,popoverPresentationControllerShouldDismissPopover(_:),popoverPresentationControllerDidDismissPopover(_:). - KeyboardKit didn’t run correctly on iOS 12 since version 5.1.0.
- The following deprecated UIKit APIs are no longer respected:
- Adds a localised title (shown in the discoverability HUD) for
KeyboardDatePicker’s Go to Today command, which is now available asKeyboardDatePicker.goToTodayKeyCommand.
- Increases the deployment target from iOS 12 to iOS 13.
- 7.1.0
- Adds common SwiftUI
KeyboardShortcuts that can be used with the.keyboardShortcutmodifier on aButton.
- Adds common SwiftUI
- 7.0.0
- Xcode 14.0 or later is now required. (Xcode 14.1 or later for Mac Catalyst)
- Adds support for iOS 16.
- Disables
KeyboardTextView’s find commands when the text view’s built-inUIFindInteractionis enabled. - Fixes adjustments to the date of
KeyboardDatePickerwithin the same month being animated on iOS 16, which made it feel less responsive.
- 6.0.0
- Xcode 13.1 is now required.
- Adds support for macOS 12 Monterey.
- Restores demo app key commands on iOS 14 and lower. (This was a regression in 5.1.0.)
- 5.1.0
- Adds support for including key commands from KeyboardKit in the discoverability HUD on iPad or menu bar on Mac using
UIMenuBuildervia many new publicDiscoverableKeyCommandproperties. - Adds demonstrating setting up the main menu in demo app’s
AppDelegate. - Changes the default value of the
canOpenSettingsproperty ofKeyboardApplicationto true if the app provides aSettings.bundleresource. - Removes unnecessary commands on Mac Catalyst to open Preferences, open a new window, close a window, and cycle the active window. These are all provided by the system on Mac Catalyst.
- Improves conditions for when text view key commands can be performed.
- Adds support for including key commands from KeyboardKit in the discoverability HUD on iPad or menu bar on Mac using
- 5.0.1
- Fixes a potential crash when selecting or moving items in a collection view. This might occur if the collection view is hidden.
- 5.0.0
- Xcode 13 is now required.
- Adds support for iOS 15.
- Adds integration with the UIKit focus system where it’s available.
- When the focus system is available, KeyboardKit will no longer provide key commands for tab navigation in split views and arrow key navigation in collection views and table views. The focus system is in some ways less capable than KeyboardKit’s implementation, but it provides other significant advantages. Please see Features.md for more details about the pros of cons of each.
- First responder management should no longer be necessary when a focus system is available. The demo app has been updated to show this.
KeyboardScrollViewandKeyboardDatePickerare now focusable as part of the tab loop. They will consume arrow key inputs to scroll or change the date while focused.KeyboardDatePickeruses aUIFocusHaloEffectby default to show a halo when focused.- Moving items in a table view or collection view and deleting items in a table view will act on the focused item instead of the selected item.
- Adds the
KeyboardBarButtonItempropertieskeyCommandWantsPriorityOverSystemBehavior,keyCommandAllowsAutomaticLocalizationandkeyCommandAllowsAutomaticMirroringto forward to iOS 15’s new properties on the bar button item’sUIKeyCommand. KeyboardWindowno longer allows the window to become the first responder, which increases the length of the responder chain at scene connection.- Fixes key commands for rewind and fast-forward not being possible due to the commands for going back taking precedence even when unavailable.
- 4.4.1
- Fixes keyboard scrolling sometimes being allowed when content should not be scrollable due to content insets.
- Fixes the UIKit focus system interfering with
KeyboardDatePickeron Mac Catalyst. - Fixes a reference to the first responder being kept longer than needed.
- 4.4.0
- Adds commands to move (reorder) the selected item in collection views and table views.
- 4.3.1
- Fixes overriding some API from some KeyboardKit classes not being possible because it was marked
publicinstead ofopen. - Fixes the Jump to Selection command in
KeyboardTextViewnot working for a plain insertion point (i.e. no selection, which is modelled as a selection with a length of zero).
- Fixes overriding some API from some KeyboardKit classes not being possible because it was marked
- 4.3.0
- Adds a Define command in
KeyboardTextViewto showUIReferenceLibraryViewControllerfor the selected text.
- Adds a Define command in
- 4.2.0
- Adds
KeyboardDatePickerto let users use arrow keys to spatially change the selected date.
- Adds
- 4.1.1
- Fixes spatial arrow key selection in collections views not respecting
flipsHorizontallyInOppositeLayoutDirection,developmentLayoutDirectionand the wayUICollectionViewCompositionalLayoutandUICollectionViewFlowLayoutcan flip even when these properties specify that flipping should not occur.
- Fixes spatial arrow key selection in collections views not respecting
- 4.1.0
- Adds calling the
UITabBarControllerDelegatemethodsshouldSelectanddidSelectwhen changing tab using a keyboard inKeyboardTabBarController. - Adds deleting rows using the delete key in the table view example in the demo app.
- Improves demo app by making the large title visible initially in the sidebar without needing to manually scroll it a tiny little bit.
- Adds calling the
- 4.0.1
- Improves table view deletion by selecting the new bottom row after deleting the bottom row.
- Fixes the Delete command not being available in
KeyboardTableViewControllerwhen the view controller was first responder rather than the table view. - Fixes the Back command being available incorrectly when the responder chain contains both a
KeyboardNavigationControllerand anotherUINavigationControllerthat is not aKeyboardNavigationController. Code style has been improved in other places to avoid this sort of thing happening again. - Fixes
KeyboardSplitViewControllerdisabling collapsing into thecompactcolumn.
- 4.0.0
- Xcode 12.2 is now required.
- Add support for Mac Catalyst in the demo app (optimised for Mac).
- Fixes the UIKit focus system interfering with selection on Mac Catalyst.
- 3.0.2
- Works around a UIKit issue where responders in the primary column of a
UISplitViewControllercould unexpectedly provide key commands when the first responder is in the secondary column.
- Works around a UIKit issue where responders in the primary column of a
- 3.0.0 / 3.0.1 — Read more in the blog post: What’s New in KeyboardKit for iOS 14?
- Xcode 12 is now required.
- Adds support for iOS 14.
- Increases the deployment target from iOS 11 to iOS 12.
- The demo app now requires iOS 14.
- Adds
KeyboardSplitViewControllerto help moving first responder status between columns in a split view. - Adds warning logging when trying to set the
primaryActionormenuon aKeyboardBarButtonsince those can’t be activated with a keyboard. - Adds
KeyboardCollectionViewDelegateandKeyboardTableViewDelegateto be notified of selection changes using arrow keys and to disallow clearing selection with escape. - Adds an overhaul of the demo app to use a sidebar (or navigation stack) as the root view. The tab bar example has been moved to a modal.
- Adds more sophisticated first responder management in the demo app.
- Adds an example showing a list with
UICollectionView. - Adds an example showing
UICollectionViewCompositionalLayoutwith nested groups. - Adds an example showing a triple column split view (available as a modal).
- 2.1.0
- Resolves project settings warnings with Xcode 12.
- Adds support for selection wrapping in any
UICollectionViewLayout. - Adds selecting the last item initially with
UICollectionViewCompositionalLayoutwhen pressing the up arrow with vertical scrolling or the trailing arrow with a horizontal scrolling. - Fixes selection in collection views not working as expected when there are supplementary views, decoration views, cells with an alpha of zero, or items for which the delegate returns false to
collectionView(_:shouldHighlightItemAt:). This issue affectedUICollectionLayoutListConfiguration. - Fixes selection in collection views sometimes shifting into an adjacent row or column when there is no padding between items.
- Fixes the back command not working with nested
UINavigationControllerss.
- 2.0.1
- Adds support for Swift Packager Manager.
- 2.0.0
- Xcode 11.4 is now required.
- KeyboardKit scroll views will no longer send their delegate
scrollViewDidEndScrollingAnimation(_:)after keyboard-driven animations end. Instead, the scroll view’s delegate can conform toKeyboardScrollingDelegateto receive callbacks when keyboard-driven scrolling animations start or finish.
- 1.2.1
- Changes Page Up and Page Down to semantic directions so they will scroll horizontally in a scroll view that can only scroll horizontally.
- Fixes scroll views with
isPagingEnabledset ending up off page boundaries if starting keyboard scrolling while the scrolling view was in-between pages while decelerating from touch scrolling. - Fixes keyboard scrolling resulting in an incorrect scroll position when content size is smaller than the bounds (seen as unwanted scrolling in the non-scrolling direction).