@logicwind/react-native-tvos-keyboard is a React Native package for tvOS that displays a native Apple TV keyboard using UISearchController, with built-in support for voice typing and seamless integration with the tvOS focus engine.
Using npm:
npm install @logicwind/react-native-tvos-keyboardor using yarn:
yarn add @logicwind/react-native-tvos-keyboardIf you're working with this Expo project, make sure to run:
npx expo prebuildAfter installation, make sure to install CocoaPods:
cd ios && pod installNo additional setup is required.
Import and use the TvosKeyboardView component.
import { useState } from 'react';
import { TvosKeyboardView } from '@logicwind/react-native-tvos-keyboard';
const [keyboardHeight, setKeyboardHeight] = useState(200);
<TvosKeyboardView
style={[styles.keyboard, { height: keyboardHeight }]}
onTextChange={(e) => console.log('Text: ', e.nativeEvent.text)}
onFocus={(e) => {
if (e.nativeEvent.focused !== undefined && e.nativeEvent.focused) {
console.log('Focused: true');
}
}}
onBlur={(e) => {
if (e.nativeEvent.blurred !== undefined && e.nativeEvent.blurred) {
console.log('Focused: false');
}
}}
onKeyboardLayoutChange={(e) => {
setKeyboardHeight(e.nativeEvent.height);
console.log('isGrid: ', e.nativeEvent.isGrid);
}}
/>;
const styles = StyleSheet.create({
keyboard: {
width: '100%',
backgroundColor: 'transparent',
},
});The TvosKeyboardView component displays the native Apple TV keyboard and supports the following props:
| Prop | Type | Description |
|---|---|---|
onTextChange |
(event) => void |
Callback triggered when the text input changes. Access the text via event.nativeEvent.text. |
onFocus |
(event) => void |
Called when the keyboard gains focus. Use event.nativeEvent.focused to check if it’s focused. |
onBlur |
(event) => void |
Called when the keyboard loses focus. Use event.nativeEvent.blurred to check if it’s blurred. |
onKeyboardLayoutChange |
(event) => void |
Called when the keyboard switches between linear and grid layouts. Provides event.nativeEvent.height (number) and event.nativeEvent.isGrid (boolean). Use this to dynamically set the component height. |
gridSeparatorColor |
ColorValue |
Color of the separator line shown in grid keyboard layout. |
linearSeparatorColor |
ColorValue |
Color of the separator line shown in linear keyboard layout. |
💡 Note: The keyboard height changes dynamically depending on whether the grid or linear layout is active. Use
onKeyboardLayoutChangeto receive the correct height and apply it to the component’s style.
react-native-tvos-keyboard is crafted mindfully at Logicwind
We are a 130+ people company developing and designing multiplatform applications using the Lean & Agile methodology. To get more information on the solutions that would suit your needs, feel free to get in touch by email or through or contact form!
We will always answer you with pleasure 😁
This project is licensed under the MIT License - see the LICENSE file for details