191 lines
8.1 KiB
Diff
191 lines
8.1 KiB
Diff
diff --git a/node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingViewManager.m b/node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingViewManager.m
|
|
index 800bd35..8fcd559 100644
|
|
--- a/node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingViewManager.m
|
|
+++ b/node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingViewManager.m
|
|
@@ -49,6 +49,7 @@ @interface KeyboardTrackingView : UIView
|
|
@property (nonatomic) CGFloat originalHeight;
|
|
@property (nonatomic) KeyboardTrackingScrollBehavior scrollBehavior;
|
|
@property (nonatomic) BOOL addBottomView;
|
|
+@property (nonatomic) NSString* bottomViewColor;
|
|
@property (nonatomic) BOOL scrollToFocusedInput;
|
|
@property (nonatomic) BOOL allowHitsOutsideBounds;
|
|
|
|
@@ -79,6 +80,7 @@ -(instancetype)init
|
|
_bottomViewHeight = kBottomViewHeight;
|
|
|
|
self.addBottomView = NO;
|
|
+ self.bottomViewColor = nil;
|
|
self.scrollToFocusedInput = NO;
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rctContentDidAppearNotification:) name:RCTContentDidAppearNotification object:nil];
|
|
@@ -170,6 +172,7 @@ - (void)initializeAccessoryViewsAndHandleInsets
|
|
|
|
for (UIView* subview in allSubviews)
|
|
{
|
|
+ NSString* className = NSStringFromClass([subview class]);
|
|
if(_manageScrollView)
|
|
{
|
|
if(_scrollViewToManage == nil)
|
|
@@ -195,7 +198,7 @@ - (void)initializeAccessoryViewsAndHandleInsets
|
|
}
|
|
}
|
|
|
|
- if ([subview isKindOfClass:NSClassFromString(@"RCTTextField")])
|
|
+ if ([className isEqualToString:@"RCTTextField"])
|
|
{
|
|
UITextField *textField = nil;
|
|
Ivar backedTextInputIvar = class_getInstanceVariable([subview class], "_backedTextInput");
|
|
@@ -209,15 +212,15 @@ - (void)initializeAccessoryViewsAndHandleInsets
|
|
}
|
|
[self setupTextField:textField];
|
|
}
|
|
- else if ([subview isKindOfClass:NSClassFromString(@"RCTUITextField")] && [subview isKindOfClass:[UITextField class]])
|
|
+ else if ([className isEqualToString:@"RCTUITextField"])
|
|
{
|
|
[self setupTextField:(UITextField*)subview];
|
|
}
|
|
- else if ([subview isKindOfClass:NSClassFromString(@"RCTMultilineTextInputView")])
|
|
+ else if ([className isEqualToString:@"RCTMultilineTextInputView"])
|
|
{
|
|
[self setupTextView:[subview valueForKey:@"_backedTextInputView"]];
|
|
}
|
|
- else if ([subview isKindOfClass:NSClassFromString(@"RCTTextView")])
|
|
+ else if ([className isEqualToString:@"RCTTextView"])
|
|
{
|
|
UITextView *textView = nil;
|
|
Ivar backedTextInputIvar = class_getInstanceVariable([subview class], "_backedTextInput");
|
|
@@ -231,7 +234,7 @@ - (void)initializeAccessoryViewsAndHandleInsets
|
|
}
|
|
[self setupTextView:textView];
|
|
}
|
|
- else if ([subview isKindOfClass:NSClassFromString(@"RCTUITextView")] && [subview isKindOfClass:[UITextView class]])
|
|
+ else if ([className isEqualToString:@"RCTUITextView"])
|
|
{
|
|
[self setupTextView:(UITextView*)subview];
|
|
}
|
|
@@ -266,6 +269,13 @@ - (void)initializeAccessoryViewsAndHandleInsets
|
|
[self addBottomViewIfNecessary];
|
|
}
|
|
|
|
+- (void)resetTracking
|
|
+{
|
|
+ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
|
+ [self deferedInitializeAccessoryViewsAndHandleInsets];
|
|
+ });
|
|
+}
|
|
+
|
|
- (void)setupTextView:(UITextView*)textView
|
|
{
|
|
if (textView != nil)
|
|
@@ -442,12 +452,28 @@ -(void)setAddBottomView:(BOOL)addBottomView
|
|
[self addBottomViewIfNecessary];
|
|
}
|
|
|
|
+-(UIColor *)colorFromHexString:(NSString *)hexString
|
|
+{
|
|
+ unsigned rgbValue = 0;
|
|
+ NSScanner *scanner = [NSScanner scannerWithString:hexString];
|
|
+ [scanner setScanLocation:1]; // bypass '#' character
|
|
+ [scanner scanHexInt:&rgbValue];
|
|
+ return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
|
|
+}
|
|
+
|
|
-(void)addBottomViewIfNecessary
|
|
{
|
|
if (self.addBottomView && _bottomView == nil)
|
|
{
|
|
_bottomView = [UIView new];
|
|
- _bottomView.backgroundColor = [UIColor whiteColor];
|
|
+ if (self.bottomViewColor)
|
|
+ {
|
|
+ _bottomView.backgroundColor = [self colorFromHexString:self.bottomViewColor];
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ _bottomView.backgroundColor = [UIColor whiteColor];
|
|
+ }
|
|
[self addSubview:_bottomView];
|
|
[self updateBottomViewFrame];
|
|
}
|
|
@@ -631,6 +657,7 @@ @implementation KeyboardTrackingViewManager
|
|
RCT_REMAP_VIEW_PROPERTY(manageScrollView, manageScrollView, BOOL)
|
|
RCT_REMAP_VIEW_PROPERTY(requiresSameParentToManageScrollView, requiresSameParentToManageScrollView, BOOL)
|
|
RCT_REMAP_VIEW_PROPERTY(addBottomView, addBottomView, BOOL)
|
|
+RCT_REMAP_VIEW_PROPERTY(bottomViewColor, bottomViewColor, NSString)
|
|
RCT_REMAP_VIEW_PROPERTY(scrollToFocusedInput, scrollToFocusedInput, BOOL)
|
|
RCT_REMAP_VIEW_PROPERTY(allowHitsOutsideBounds, allowHitsOutsideBounds, BOOL)
|
|
|
|
@@ -687,6 +714,21 @@ - (UIView *)view
|
|
}];
|
|
}
|
|
|
|
+RCT_EXPORT_METHOD(resetTracking:(nonnull NSNumber *)reactTag)
|
|
+{
|
|
+ [self.bridge.uiManager addUIBlock:
|
|
+ ^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, KeyboardTrackingView *> *viewRegistry) {
|
|
+
|
|
+ KeyboardTrackingView *view = viewRegistry[reactTag];
|
|
+ if (!view || ![view isKindOfClass:[KeyboardTrackingView class]]) {
|
|
+ RCTLogError(@"Error: cannot find KeyboardTrackingView with tag #%@", reactTag);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ [view resetTracking];
|
|
+ }];
|
|
+}
|
|
+
|
|
#pragma mark - helper methods
|
|
|
|
-(void)rejectPromise:(RCTPromiseRejectBlock)reject withErrorMessage:(NSString*)errorMessage errorCode:(NSInteger)errorCode
|
|
diff --git a/node_modules/react-native-keyboard-tracking-view/react-native-keyboard-tracking-view.podspec b/node_modules/react-native-keyboard-tracking-view/react-native-keyboard-tracking-view.podspec
|
|
new file mode 100644
|
|
index 0000000..a6dbe01
|
|
--- /dev/null
|
|
+++ b/node_modules/react-native-keyboard-tracking-view/react-native-keyboard-tracking-view.podspec
|
|
@@ -0,0 +1,19 @@
|
|
+require 'json'
|
|
+
|
|
+package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
|
|
+
|
|
+Pod::Spec.new do |s|
|
|
+ s.name = package['name']
|
|
+ s.version = package['version']
|
|
+ s.summary = package['description']
|
|
+ s.license = package['license']
|
|
+
|
|
+ s.authors = package['author']
|
|
+ s.homepage = package['homepage']
|
|
+ s.platform = :ios, "9.0"
|
|
+
|
|
+ s.source = { :git => "https://github.com/wix/react-native-keyboard-tracking-view.git", :tag => "v#{s.version}" }
|
|
+ s.source_files = "lib/**/*.{h,m}"
|
|
+
|
|
+ s.dependency 'React'
|
|
+end
|
|
\ No newline at end of file
|
|
diff --git a/node_modules/react-native-keyboard-tracking-view/src/KeyboardTrackingView.android.js b/node_modules/react-native-keyboard-tracking-view/src/KeyboardTrackingView.android.js
|
|
index af15edf..1e1bd35 100644
|
|
--- a/node_modules/react-native-keyboard-tracking-view/src/KeyboardTrackingView.android.js
|
|
+++ b/node_modules/react-native-keyboard-tracking-view/src/KeyboardTrackingView.android.js
|
|
@@ -14,4 +14,5 @@ export default class KeyboardTrackingView extends PureComponent {
|
|
return {trackingViewHeight: 0, keyboardHeight: 0, contentTopInset: 0};
|
|
}
|
|
scrollToStart() {}
|
|
+ resetTracking() {}
|
|
}
|
|
diff --git a/node_modules/react-native-keyboard-tracking-view/src/KeyboardTrackingView.ios.js b/node_modules/react-native-keyboard-tracking-view/src/KeyboardTrackingView.ios.js
|
|
index 5e2c207..43bc252 100644
|
|
--- a/node_modules/react-native-keyboard-tracking-view/src/KeyboardTrackingView.ios.js
|
|
+++ b/node_modules/react-native-keyboard-tracking-view/src/KeyboardTrackingView.ios.js
|
|
@@ -30,4 +30,10 @@ export default class KeyboardTrackingView extends PureComponent {
|
|
KeyboardTrackingViewManager.scrollToStart(ReactNative.findNodeHandle(this.ref));
|
|
}
|
|
}
|
|
+
|
|
+ resetTracking() {
|
|
+ if (this.ref && KeyboardTrackingViewManager && KeyboardTrackingViewManager.resetTracking) {
|
|
+ KeyboardTrackingViewManager.resetTracking(ReactNative.findNodeHandle(this.ref));
|
|
+ }
|
|
+ }
|
|
}
|