Fix a crash when keyboard is visible and bridge reload happens
Reviewed By: sahrens Differential Revision: D6573855 fbshipit-source-id: 8768dca7d36782e82fb457f6ff4b09791e669d00
This commit is contained in:
parent
5f8d8e90c2
commit
d9c658566a
|
@ -37,9 +37,10 @@
|
|||
|
||||
- (void)sendEventWithName:(NSString *)eventName body:(id)body
|
||||
{
|
||||
RCTAssert(_bridge != nil, @"bridge is not set. This is probably because you've "
|
||||
RCTAssert(_bridge != nil, @"Error when sending event: %@ with body: %@. "
|
||||
"Bridge is not set. This is probably because you've "
|
||||
"explicitly synthesized the bridge in %@, even though it's inherited "
|
||||
"from RCTEventEmitter.", [self class]);
|
||||
"from RCTEventEmitter.", eventName, body, [self class]);
|
||||
|
||||
if (RCT_DEBUG && ![[self supportedEvents] containsObject:eventName]) {
|
||||
RCTLogError(@"`%@` is not a supported event type for %@. Supported events are: `%@`",
|
||||
|
|
|
@ -54,9 +54,15 @@ RCT_EXPORT_MODULE()
|
|||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
// Bridge might be already invalidated by the time the keyboard is about to be dismissed.
|
||||
// This might happen, for example, when reload from the packager is performed.
|
||||
// Thus we need to check against nil here.
|
||||
#define IMPLEMENT_KEYBOARD_HANDLER(EVENT) \
|
||||
- (void)EVENT:(NSNotification *)notification \
|
||||
{ \
|
||||
if (!self.bridge) { \
|
||||
return; \
|
||||
} \
|
||||
[self sendEventWithName:@#EVENT \
|
||||
body:RCTParseKeyboardNotification(notification)]; \
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue