Skip to content

Commit 2bbab41

Browse files
committed
fix: use makeFirstResponder
Apple docs explicitly say: "never invoke this method directly" for becomeFirstResponder and resignFirstResponder This was causing the following crash: "ExceptionsManager.js:73 Exception thrown while executing UI block: NSWindow: -_oldFirstResponderBeforeBecoming is not a valid message outside of a responder's implementation of -becomeFirstResponder."
1 parent ab31962 commit 2bbab41

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

React/Modules/RCTRedBox.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ - (void)showErrorMessage:(NSString *)message withStack:(NSArray<RCTJSStackFrame
168168
[app setActivationPolicy:NSApplicationActivationPolicyRegular];
169169

170170
[self makeKeyAndOrderFront:nil];
171-
[self becomeFirstResponder];
171+
[self makeFirstResponder:self];
172172
}
173173
}
174174

React/Views/NSView+React.m

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,21 +230,23 @@ - (void)setReactIsFocusNeeded:(BOOL)isFocusNeeded
230230
}
231231

232232
- (void)reactFocus {
233-
if (![self becomeFirstResponder]) {
233+
if (![self.window makeFirstResponder:self]) {
234234
self.reactIsFocusNeeded = YES;
235235
}
236236
}
237237

238238
- (void)reactFocusIfNeeded {
239239
if (self.reactIsFocusNeeded) {
240-
if ([self becomeFirstResponder]) {
240+
if ([self.window makeFirstResponder:self]) {
241241
self.reactIsFocusNeeded = NO;
242242
}
243243
}
244244
}
245245

246246
- (void)reactBlur {
247-
[self resignFirstResponder];
247+
if (self == self.window.firstResponder) {
248+
[self.window makeFirstResponder:nil];
249+
}
248250
}
249251

250252
#pragma mark - Layout

0 commit comments

Comments
 (0)