react-native-keyboard-controller 1.5.4 → 1.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Keyboard manager which works in identical way on both iOS and Android.
|
|
|
8
8
|
|
|
9
9
|
## Key features
|
|
10
10
|
|
|
11
|
-
- mapping keyboard
|
|
11
|
+
- mapping keyboard movement to animated values 😎
|
|
12
12
|
- missing `keyboardWillShow` / `keyboardWillHide` events are available on Android 😍
|
|
13
13
|
- module for changing soft input mode on Android 🤔
|
|
14
14
|
- reanimated support 🚀
|
|
@@ -79,7 +79,7 @@ using namespace facebook::react;
|
|
|
79
79
|
|
|
80
80
|
// TODO: use built-in _eventEmitter once NativeAnimated module will use ModernEventemitter
|
|
81
81
|
RCTBridge *bridge = [RCTBridge currentBridge];
|
|
82
|
-
if (bridge) {
|
|
82
|
+
if (bridge && [bridge valueForKey:@"_jsThread"]) {
|
|
83
83
|
KeyboardMoveEvent *keyboardMoveEvent =
|
|
84
84
|
[[KeyboardMoveEvent alloc] initWithReactTag:@(self.tag)
|
|
85
85
|
event:event
|
|
@@ -5,20 +5,24 @@ class KeyboardControllerViewManager: RCTViewManager {
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
override func view() -> (KeyboardControllerView) {
|
|
8
|
-
return KeyboardControllerView(frame: CGRect.zero,
|
|
8
|
+
return KeyboardControllerView(frame: CGRect.zero, bridge: bridge)
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
class KeyboardControllerView: UIView {
|
|
13
|
+
// internal variables
|
|
13
14
|
private var keyboardObserver: KeyboardMovementObserver?
|
|
14
15
|
private var eventDispatcher: RCTEventDispatcherProtocol
|
|
16
|
+
private var bridge: RCTBridge
|
|
17
|
+
// react props
|
|
15
18
|
@objc var onKeyboardMoveStart: RCTDirectEventBlock?
|
|
16
19
|
@objc var onKeyboardMove: RCTDirectEventBlock?
|
|
17
20
|
@objc var onKeyboardMoveEnd: RCTDirectEventBlock?
|
|
18
21
|
@objc var onKeyboardMoveInteractive: RCTDirectEventBlock?
|
|
19
22
|
|
|
20
|
-
init(frame: CGRect,
|
|
21
|
-
self.
|
|
23
|
+
init(frame: CGRect, bridge: RCTBridge) {
|
|
24
|
+
self.bridge = bridge
|
|
25
|
+
eventDispatcher = bridge.eventDispatcher()
|
|
22
26
|
super.init(frame: frame)
|
|
23
27
|
}
|
|
24
28
|
|
|
@@ -43,6 +47,10 @@ class KeyboardControllerView: UIView {
|
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
func onEvent(event: NSString, height: NSNumber, progress: NSNumber) {
|
|
50
|
+
// we don't want to send event to JS before the JS thread is ready
|
|
51
|
+
if bridge.value(forKey: "_jsThread") == nil {
|
|
52
|
+
return
|
|
53
|
+
}
|
|
46
54
|
eventDispatcher.send(
|
|
47
55
|
KeyboardMoveEvent(
|
|
48
56
|
reactTag: reactTag,
|
package/package.json
CHANGED