mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-24 04:16:00 +08:00
Fixed onFocus/onBlur events for multiline TextInput
Summary: public onFocus and onBlur were not firing for multiline TextInputs. Reviewed By: tadeuzagallo Differential Revision: D2699846 fb-gh-sync-id: 7e64309bc631a42a99f989f615fef927dc50217c
This commit is contained in:
committed by
facebook-github-bot-0
parent
60db876f66
commit
01a0facf33
@@ -239,12 +239,19 @@ static void RCTUpdatePlaceholder(RCTTextField *self)
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)becomeFirstResponder
|
||||
- (void)reactWillMakeFirstResponder
|
||||
{
|
||||
_jsRequestingFirstResponder = YES;
|
||||
BOOL result = [super becomeFirstResponder];
|
||||
}
|
||||
|
||||
- (void)reactDidMakeFirstResponder
|
||||
{
|
||||
_jsRequestingFirstResponder = NO;
|
||||
return result;
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeFirstResponder
|
||||
{
|
||||
return _jsRequestingFirstResponder;
|
||||
}
|
||||
|
||||
- (BOOL)resignFirstResponder
|
||||
@@ -261,9 +268,4 @@ static void RCTUpdatePlaceholder(RCTTextField *self)
|
||||
return result;
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeFirstResponder
|
||||
{
|
||||
return _jsRequestingFirstResponder;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -22,6 +22,9 @@
|
||||
@end
|
||||
|
||||
@implementation RCTUITextView
|
||||
{
|
||||
BOOL _jsRequestingFirstResponder;
|
||||
}
|
||||
|
||||
- (void)paste:(id)sender
|
||||
{
|
||||
@@ -29,12 +32,26 @@
|
||||
[super paste:sender];
|
||||
}
|
||||
|
||||
- (void)reactWillMakeFirstResponder
|
||||
{
|
||||
_jsRequestingFirstResponder = YES;
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeFirstResponder
|
||||
{
|
||||
return _jsRequestingFirstResponder;
|
||||
}
|
||||
|
||||
- (void)reactDidMakeFirstResponder
|
||||
{
|
||||
_jsRequestingFirstResponder = NO;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation RCTTextView
|
||||
{
|
||||
RCTEventDispatcher *_eventDispatcher;
|
||||
BOOL _jsRequestingFirstResponder;
|
||||
NSString *_placeholder;
|
||||
UITextView *_placeholderView;
|
||||
UITextView *_textView;
|
||||
@@ -360,7 +377,7 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
|
||||
|
||||
[_eventDispatcher sendTextEventWithType:RCTTextEventTypeFocus
|
||||
reactTag:self.reactTag
|
||||
text:textView.text
|
||||
text:nil
|
||||
key:nil
|
||||
eventCount:_nativeEventCount];
|
||||
}
|
||||
@@ -385,28 +402,27 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
|
||||
text:textView.text
|
||||
key:nil
|
||||
eventCount:_nativeEventCount];
|
||||
|
||||
[_eventDispatcher sendTextEventWithType:RCTTextEventTypeBlur
|
||||
reactTag:self.reactTag
|
||||
text:nil
|
||||
key:nil
|
||||
eventCount:_nativeEventCount];
|
||||
}
|
||||
|
||||
- (void)reactWillMakeFirstResponder
|
||||
{
|
||||
[_textView reactWillMakeFirstResponder];
|
||||
}
|
||||
|
||||
- (BOOL)becomeFirstResponder
|
||||
{
|
||||
_jsRequestingFirstResponder = YES;
|
||||
BOOL result = [_textView becomeFirstResponder];
|
||||
_jsRequestingFirstResponder = NO;
|
||||
return result;
|
||||
return [_textView becomeFirstResponder];
|
||||
}
|
||||
|
||||
- (BOOL)resignFirstResponder
|
||||
- (void)reactDidMakeFirstResponder
|
||||
{
|
||||
[super resignFirstResponder];
|
||||
BOOL result = [_textView resignFirstResponder];
|
||||
if (result) {
|
||||
[_eventDispatcher sendTextEventWithType:RCTTextEventTypeBlur
|
||||
reactTag:self.reactTag
|
||||
text:_textView.text
|
||||
key:nil
|
||||
eventCount:_nativeEventCount];
|
||||
}
|
||||
return result;
|
||||
[_textView reactDidMakeFirstResponder];
|
||||
}
|
||||
|
||||
- (void)layoutSubviews
|
||||
@@ -415,11 +431,6 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
|
||||
[self updateFrames];
|
||||
}
|
||||
|
||||
- (BOOL)canBecomeFirstResponder
|
||||
{
|
||||
return _jsRequestingFirstResponder;
|
||||
}
|
||||
|
||||
- (UIFont *)defaultPlaceholderFont
|
||||
{
|
||||
return [UIFont systemFontOfSize:17];
|
||||
|
||||
Reference in New Issue
Block a user