mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Implement setTextAndSelection as view command in TextInput
Summary: Changelog: Add view command `TextInput.setTextAndSelection` Reviewed By: JoshuaGross Differential Revision: D19789675 fbshipit-source-id: 8eb19bd21b1e153c9639507016a9f452c5f835b0
This commit is contained in:
committed by
Facebook Github Bot
parent
111f04ff11
commit
fb8f5ea07f
@@ -51,6 +51,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, copy) NSString *inputAccessoryViewID;
|
||||
@property (nonatomic, assign) UIKeyboardType keyboardType;
|
||||
|
||||
- (void)setText:(NSString *__nullable)text
|
||||
selectionStart:(NSInteger)start
|
||||
selectionEnd:(NSInteger)end;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -193,6 +193,25 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithFrame:(CGRect)frame)
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setText:(NSString *__nullable)text
|
||||
selectionStart:(NSInteger)start
|
||||
selectionEnd:(NSInteger)end
|
||||
{
|
||||
if (text) {
|
||||
NSMutableAttributedString *mutableString =
|
||||
[[NSMutableAttributedString alloc] initWithAttributedString:self.backedTextInputView.attributedText];
|
||||
[mutableString replaceCharactersInRange:NSMakeRange(0, mutableString.string.length) withString:text];
|
||||
self.backedTextInputView.attributedText = mutableString;
|
||||
}
|
||||
|
||||
UITextPosition *startPosition = [self.backedTextInputView positionFromPosition:self.backedTextInputView.beginningOfDocument
|
||||
offset:start];
|
||||
UITextPosition *endPosition = [self.backedTextInputView positionFromPosition:self.backedTextInputView.beginningOfDocument
|
||||
offset:end];
|
||||
UITextRange *range = [self.backedTextInputView textRangeFromPosition:startPosition toPosition:endPosition];
|
||||
[self.backedTextInputView setSelectedTextRange:range notifyDelegate:NO];
|
||||
}
|
||||
|
||||
- (void)setTextContentType:(NSString *)type
|
||||
{
|
||||
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED)
|
||||
|
||||
@@ -125,6 +125,19 @@ RCT_EXPORT_METHOD(setMostRecentEventCount : (nonnull NSNumber *)viewTag eventCou
|
||||
}];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(setTextAndSelection : (nonnull NSNumber *)viewTag
|
||||
mostRecentEventCount : (NSInteger)mostRecentEventCount
|
||||
value : (NSString *)value
|
||||
start : (NSInteger)start
|
||||
end : (NSInteger)end)
|
||||
{
|
||||
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
||||
RCTBaseTextInputView *view = (RCTBaseTextInputView *)viewRegistry[viewTag];
|
||||
view.mostRecentEventCount = mostRecentEventCount;
|
||||
[view setText:value selectionStart:start selectionEnd:end];
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - RCTUIManagerObserver
|
||||
|
||||
- (void)uiManagerWillPerformMounting:(__unused RCTUIManager *)uiManager
|
||||
|
||||
Reference in New Issue
Block a user