Skip to content

Commit 23ff4ab

Browse files
committed
fix
1 parent d210f86 commit 23ff4ab

File tree

1 file changed

+31
-39
lines changed

1 file changed

+31
-39
lines changed

src/useKeyboard.ts

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,45 @@
11
import React, { useEffect, useState } from 'react'
2-
import { Keyboard } from 'react-native'
2+
import { Keyboard, KeyboardEventListener, ScreenRect } from 'react-native'
33

44

55
export default function useKeyboard() {
6-
const [keyboard, setKeyboard] = useState({ Keyboard })
7-
8-
function keyboardShown(e) {
9-
setKeyboard({
10-
isKeyboardShow: true,
11-
Keyboard,
12-
endCoordinates: e.endCoordinates,
13-
startCoordinates: e.startCoordinates
14-
})
6+
const [shown, setShown] = useState(false)
7+
const [coordinates, setCoordinates] = useState<{ start: ScreenRect, end: ScreenRect }>({
8+
start: { screenX:0, screenY: 0, width: 0, height: 0 },
9+
end: { screenX:0, screenY: 0, width: 0, height: 0 },
10+
})
11+
12+
const handleKeyboardWillShow: KeyboardEventListener = (e) => {
13+
setCoordinates({ start: e.startCoordinates, end: e.endCoordinates })
1514
}
16-
17-
function keyboardHidden(e) {
18-
setKeyboard({
19-
isKeyboardShow: false,
20-
Keyboard,
21-
endCoordinates: e.endCoordinates,
22-
startCoordinates: e.startCoordinates
23-
})
15+
const handleKeyboardDidShow: KeyboardEventListener = (e) => {
16+
setShown(true)
17+
setCoordinates({ start: e.startCoordinates, end: e.endCoordinates })
18+
}
19+
const handleKeyboardWillHide: KeyboardEventListener = (e) => {
20+
setCoordinates({ start: e.startCoordinates, end: e.endCoordinates })
21+
}
22+
const handleKeyboardDidHide: KeyboardEventListener = (e) => {
23+
setShown(false)
24+
setCoordinates({ start: e.startCoordinates, end: e.endCoordinates })
2425
}
2526

2627
useEffect(() => {
27-
keyboardDidShowListener = Keyboard.addListener(
28-
'keyboardWillShow',
29-
keyboardHidden
30-
)
31-
32-
keyboardDidShowListener = Keyboard.addListener(
33-
'keyboardDidShow',
34-
keyboardShown
35-
)
36-
37-
keyboardDidShowListener = Keyboard.addListener(
38-
'keyboardWillHide',
39-
keyboardShown
40-
)
41-
42-
keyboardDidHideListener = Keyboard.addListener(
43-
'keyboardDidHide',
44-
keyboardHidden
45-
)
28+
const keyboardWillShowListener = Keyboard.addListener('keyboardWillShow', handleKeyboardWillShow)
29+
const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', handleKeyboardDidShow)
30+
const keyboardWillHideListener = Keyboard.addListener('keyboardWillHide', handleKeyboardWillHide)
31+
const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', handleKeyboardDidHide)
4632

4733
return () => {
48-
keyboardDidShowListener.remove()
34+
keyboardWillShowListener.remove()
35+
keyboardDidShowListener.remove()
36+
keyboardWillHideListener.remove()
4937
keyboardDidHideListener.remove()
5038
}
5139
}, [])
52-
return keyboard
40+
41+
return {
42+
keyboardShown: shown,
43+
coordinates,
44+
}
5345
}

0 commit comments

Comments
 (0)