diff --git a/React/Base/RCTTouchHandler.m b/React/Base/RCTTouchHandler.m index e7325a94c78cc1..98eab713c42b8b 100644 --- a/React/Base/RCTTouchHandler.m +++ b/React/Base/RCTTouchHandler.m @@ -128,7 +128,10 @@ - (void)_recordNewTouches:(NSSet *)touches #else // [TODO(macOS ISS#2323203) CGPoint touchLocation = [self.view convertPoint:touch.locationInWindow fromView:nil]; NSView *targetView = [self.view hitTest:touchLocation]; - if ([targetView isKindOfClass:NSText.class]) { + // Pair the mouse down events with mouse up events so our _nativeTouches cache doesn't get stale + if ([targetView isKindOfClass:[NSControl class]]) { + _shouldSendMouseUpOnSystemBehalf = [(NSControl*)targetView isEnabled]; + } else if ([targetView isKindOfClass:[NSText class]]) { _shouldSendMouseUpOnSystemBehalf = [(NSText*)targetView isSelectable]; } else { _shouldSendMouseUpOnSystemBehalf = NO;