Hacker News new | past | comments | ask | show | jobs | submit login

> I can install any keyboard I want as long as it's just a skin on their keyboard.

As an iOS app dev with a hobby project iOS keyboard, this is false. Third party iOS keyboards have just as much control over the keyboard UI and how each key (if it even has keys — your “keyboard” can be literally anything) interacts with text as a full fledged app does. In fact there is no way to “skin” the standard keyboard, but I wish there were because building a decent touch keyboard is actually quite difficult and that’d reduce the workload quite a lot.




For many years the keyboards were only skins, and for many years after that they would periodically lose their default status and revert to the built in keyboard.

Now it seems that the keyboards randomly hang / crash and don't come up when requested on the first try.

Apple goes out of their way to screw with third party competitors.


I'm extremely interested in this; how come none of the keyboards I've tried depart from the same layout as Apple? Is it strict adherence to guidelines rather than technical restriction then?

To wit, some of the features that same-named apps/keyboards give me on android but not on iPhone include "hold key for alternative character" or button to "force" numpad. As well all keyboards I've tried have same layout and sizing as the original one.

I assumed it was imposed on them in some way I guess?


I don't think there's much, if anything, in the way of App Store guidelines for keyboards except that they do things with the text field the user currently has highlighted.

For instance the app Fantastical comes with a "keyboard" that inputs dates that are open on your calendar[0] and there exist a few rather nonstandard keyboards like Typewise[1].

Absence of features common on Android boards I would guess comes down to those patterns not being familiar to (and thus, not desired by) iOS users or in some cases software patents (there have been a few cases of keyboard devs receiving cease and desist notices from patent holders for using some UI pattern).

[0]: https://flexibits.com/img/help/fantastical-ios/en/f3-opening... [1]: https://apps.apple.com/us/app/typewise-custom-keyboard/id147...


I have MessageEase installed as a keyboard.

https://www.exideas.com/ME/index.php

Somewhat different from the original keyboard layout.

(The paucity of alternatives is probably down to patents and licensing.)


yet, 20% of times, apple loads their own keyboard instead of my default GBoard :)


This is most likely due to developers of certain apps/inputs and not iOS/Apple themselves, there is a simple line of code to do this and from what I've noticed some overly-secure-wannabe-apps force system keyboard for certain inputs.


Yes, developers can disable third party keyboards throughout their entire app with an application delegate method[0], and when secureTextEntry[1] is enabled on UITextField the system automatically disables third party keyboards on both that text field as well as any immediately adjacent text field (likely for username+password combos).

The idea is that because keyboards can connect to the internet (with user permission), there's potential for data theft. It may also be possible to exfiltrate data from a keyboard extension by saving the data to an app container shared by the host app, which the host app can then send out with its network access.

Devs who don't know how or care to properly accommodate the variable height of third-party keyboards may use the app-wide opt-out to eliminate bugs relating to that, though I haven't personally encountered this.

[0]: https://developer.apple.com/documentation/uikit/uiapplicatio... [1]: https://developer.apple.com/documentation/uikit/uitextinputt...




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: