Reputation: 34983
Custom Keyboard Extensions are a powerful new tool in iOS 8 that allow you to implement keyboard features that the stock iOS 8 keyboard will never have.
However, the stock iOS keyboard is already very good. It has had years of development as the only iOS keyboard, and thus has many (costly to implement) features that people expect from their keyboard.
I would be interested in implementing several small keyboard features, but would also want to keep the main UI and features of the normal iOS 8 keyboard.
For example, rather than suggesting a list of words in the new Auto-Complete area, a keyboard extension could suggest a list of Emoji.
Keymoji have created this keyboard, but seem to have manually copied the look of the iOS keyboard rather than inherit from it. There are many small differences when typing on their keyboard. This creates an uncanny valley-like experience, typing on a keyboard that is very similar to, but not quite, the stock iOS keyboard.
It would be ideal to only implement a keyboard listener, emoji lookup, and custom UI limited to the Auto-Complete area. Other features and UI would be handled by the stock keyboard.
Or are you also on the hook for (re-)implementing auto-complete, capitalization, resizing tap targets, UI for individual keys, and the many other features that people expect from a keyboard?
Do Custom Keyboard Extensions get any of these features "for free"?
Upvotes: 3
Views: 1177
Reputation: 57050
The entire internal implementation of the system keyboard is currently private API and is not available to developers. Some functionality cannot be replicated completely, as the system keyboard is hosted in the user app process, while keyboard extensions are spun up in a helper process. The view hierarchy of keyboard extensions is rendered off process, and drawn on the user app using XPC.
Despite any limitations on keyboard extensions, many of the default features could be offered to users, such as views, predictive typing API and so on. This would help achieving consistency between switching keyboards, for example.
Make sure to open a bug report with Apple, letting them know the current shortcomings of their solution, and what you think would benefit developers. Post the bug report number (radar) here, so other developers can duplicate the bug report, and let Apple prioritize it accordingly.
Upvotes: 4