MASTG-KNOW-0141: Custom Keyboards
A custom keyboard is an app extension (see App Extensions) that replaces the system keyboard across all apps on the device. The user installs it through its containing app and must explicitly enable it in Settings (General > Keyboard > Keyboards).
By default a custom keyboard runs without "Full Access", which prevents it from making network requests or accessing shared containers; the user can grant "Full Access" in Settings, which the keyboard requests via the RequestsOpenAccess key and is able to check whether it has it through the hasFullAccess property of UIInputViewController.
iOS gives apps two relevant controls over which keyboard processes their text fields:
- A
UITextFieldorUITextViewwhoseisSecureTextEntrytrait istrue(or a SwiftUISecureField) always uses the system keyboard. Third-party keyboards are not shown for secure fields, so they never receive the typed characters. - An app can reject custom keyboard extensions across the whole app by implementing
application(_:shouldAllowExtensionPointIdentifier:)in itsUIApplicationDelegateand returningfalseforUIApplicationKeyboardExtensionPointIdentifier(com.apple.keyboard-service). The system then uses the built-in keyboard throughout the app, regardless of the keyboards the user has installed.