react-native-inputscrollview/ios/InputScrollViewPlugin/InputScrollViewPlugin.m

65 lines
1.6 KiB
Objective-C

//
// InputScrollViewPlugin.m
// InputScrollViewPlugin
//
// Created by LvBingru on 4/11/16.
// Copyright © 2016 erica. All rights reserved.
//
#import "InputScrollViewPlugin.h"
#import "RCTShadowView.h"
#import "RCTUIManager.h"
#import "RCTTextField.h"
#import "RCTTextView.h"
@implementation InputScrollViewPlugin
RCT_EXPORT_MODULE();
@synthesize bridge = _bridge;
RCT_EXPORT_METHOD(isSubview:(nonnull NSNumber *)reactTag
relativeTo:(nonnull NSNumber *)ancestorReactTag
callback:(RCTResponseSenderBlock)callback)
{
dispatch_async(dispatch_get_main_queue(), ^{
UIView *view = [_bridge.uiManager viewForReactTag:reactTag];
UIView *ancestorView = [_bridge.uiManager viewForReactTag:ancestorReactTag];
while (view) {
view = view.superview;
if (view == ancestorView) {
if (callback) {
callback(@[@(YES)]);
}
return;
}
}
if (callback) {
callback(@[@(NO)]);
}
});
}
RCT_EXPORT_METHOD(isTextInput:(nonnull NSNumber *)reactTag
callback:(RCTResponseSenderBlock)callback)
{
dispatch_async(dispatch_get_main_queue(), ^{
UIView *view = [_bridge.uiManager viewForReactTag:reactTag];
if ([view isKindOfClass:[RCTTextField class]] || [view isKindOfClass:[RCTTextView class]]) {
if (callback) {
callback(@[@(YES)]);
}
}
else {
if (callback) {
callback(@[@(NO)]);
}
}
});
}
@end