keyboard.frame
The shown keyboard's frame on screen, in points; null while it is hidden. A motion value the UI thread moves from the keyboard's own events, so a view bound to it moves without the JS thread; read it anywhere.
Usage
Dismiss and observe the keyboard
import { Box, Button, Text, VStack, keyboard } from 'kuito';
export default function KeyboardState() {
keyboard.frame.value; // { screenX, screenY, width, height } or null
// In a component, until it unmounts; elsewhere, until remove().
keyboard.watch('didShow', (event) => console.log(event.frame.height, event.duration));
return (
<VStack>
<Text>{keyboard.visible.value ? 'typing' : ''}</Text>
{/* Rides on the keyboard. */}
<Box translateY={keyboard.height.map((height) => -height)} />
<Button onPress={() => keyboard.dismiss()}>Done</Button>
</VStack>
);
}Properties and methods 3
| Name | Type | Required | Description |
|---|---|---|---|
value | KeyboardFrame | Yes | A value moves there now; an animation (timing, spring, decay, ...) moves it there. |
follows | (source: GestureSource | Readable<KeyboardFrame>) => Motion<KeyboardFrame> | Yes | Moves with source on the UI thread, with no code: a gesture's field
(drag.x), another motion value or a derived one. Null stops it. |
map | <U>(fn: (value: KeyboardFrame) => U) => Derived<U> | Yes | A value computed from this one, on the UI thread. |
follows — method signatures
Signatures
(source: GestureSource | Readable<KeyboardFrame>): Motion<KeyboardFrame>Parameters
| Name | Type | Required | Description |
|---|---|---|---|
source | GestureSource | Readable<KeyboardFrame> | Yes | — |
Returns
map — method signatures
Signatures
<U>(fn: (value: KeyboardFrame) => U): Derived<U>Type parameters
| Name | Constraint | Default |
|---|---|---|
U | — | — |
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
fn | (value: KeyboardFrame) => U | Yes | — |
Returns
Derived<U>
Generated from the public TypeScript declarations: signatures, props and defaults come from the checked source, descriptions from its JSDoc. No defaults are invented.