@good-react-native/keyboard-avoider
Version:
A package for *easily* creating the keyboard avoiding behavior your want.
28 lines (27 loc) • 857 B
text/typescript
import { useEffect, useState } from "react";
import { Keyboard, KeyboardEventListener, Platform } from "react-native";
export function useKeyboardHandlers({
showHandler,
hideHandler,
enabled=true,
} : {
showHandler: KeyboardEventListener,
hideHandler: KeyboardEventListener,
enabled?: boolean,
}, deps?: any[]) {
useEffect(() => {
if(!enabled) return;
const subscribe = Keyboard.addListener(
Platform.OS == 'android' ? 'keyboardDidShow' : 'keyboardWillShow',
showHandler,
)
const subscribe2 = Keyboard.addListener(
Platform.OS == 'android' ? 'keyboardDidHide' : 'keyboardWillHide',
hideHandler,
)
return () => {
subscribe.remove()
subscribe2.remove()
}
}, deps?[enabled].concat(deps):[enabled])
}