1
1
import * as React from 'react' ;
2
- import { Keyboard , Platform } from 'react-native' ;
2
+ import { Keyboard , Platform , EmitterSubscription } from 'react-native' ;
3
3
4
4
export default function useIsKeyboardShown ( ) {
5
5
const [ isKeyboardShown , setIsKeyboardShown ] = React . useState ( false ) ;
@@ -8,22 +8,22 @@ export default function useIsKeyboardShown() {
8
8
const handleKeyboardShow = ( ) => setIsKeyboardShown ( true ) ;
9
9
const handleKeyboardHide = ( ) => setIsKeyboardShown ( false ) ;
10
10
11
+ let subscriptions : EmitterSubscription [ ] ;
12
+
11
13
if ( Platform . OS === 'ios' ) {
12
- Keyboard . addListener ( 'keyboardWillShow' , handleKeyboardShow ) ;
13
- Keyboard . addListener ( 'keyboardWillHide' , handleKeyboardHide ) ;
14
+ subscriptions = [
15
+ Keyboard . addListener ( 'keyboardWillShow' , handleKeyboardShow ) ,
16
+ Keyboard . addListener ( 'keyboardWillHide' , handleKeyboardHide ) ,
17
+ ] ;
14
18
} else {
15
- Keyboard . addListener ( 'keyboardDidShow' , handleKeyboardShow ) ;
16
- Keyboard . addListener ( 'keyboardDidHide' , handleKeyboardHide ) ;
19
+ subscriptions = [
20
+ Keyboard . addListener ( 'keyboardDidShow' , handleKeyboardShow ) ,
21
+ Keyboard . addListener ( 'keyboardDidHide' , handleKeyboardHide ) ,
22
+ ] ;
17
23
}
18
24
19
25
return ( ) => {
20
- if ( Platform . OS === 'ios' ) {
21
- Keyboard . removeListener ( 'keyboardWillShow' , handleKeyboardShow ) ;
22
- Keyboard . removeListener ( 'keyboardWillHide' , handleKeyboardHide ) ;
23
- } else {
24
- Keyboard . removeListener ( 'keyboardDidShow' , handleKeyboardShow ) ;
25
- Keyboard . removeListener ( 'keyboardDidHide' , handleKeyboardHide ) ;
26
- }
26
+ subscriptions . forEach ( ( s ) => s . remove ( ) ) ;
27
27
} ;
28
28
} , [ ] ) ;
29
29
0 commit comments