RCTBEEPickerManager.m 4.29 KB
Newer Older
xwenliang's avatar
xwenliang committed
1 2 3 4 5 6 7 8 9 10
//
//  RCTBEEPickerManager.m
//  RCTBEEPickerManager
//
//  Created by MFHJ-DZ-001-417 on 16/9/6.
//  Copyright © 2016年 MFHJ-DZ-001-417. All rights reserved.
//

#import "RCTBEEPickerManager.h"
#import "BzwPicker.h"
11
#import <React/RCTEventDispatcher.h>
xwenliang's avatar
xwenliang committed
12 13 14 15

@interface RCTBEEPickerManager()

@property(nonatomic,strong)BzwPicker *pick;
16
@property(nonatomic,assign)float height;
17
@property(nonatomic,weak)UIWindow * window;
xwenliang's avatar
xwenliang committed
18 19 20 21 22 23 24

@end

@implementation RCTBEEPickerManager

@synthesize bridge = _bridge;

Reza's avatar
Reza committed
25 26 27 28 29 30 31 32 33 34
- (dispatch_queue_t)methodQueue
{
    return dispatch_get_main_queue();
}

+ (BOOL)requiresMainQueueSetup
{
    return YES;
}

xwenliang's avatar
xwenliang committed
35 36 37
RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(_init:(NSDictionary *)indic){
Reza's avatar
Reza committed
38

xwenliang's avatar
xwenliang committed
39 40 41
    dispatch_async(dispatch_get_main_queue(), ^{
        [[UIApplication sharedApplication].keyWindow endEditing:YES];
    });
Reza's avatar
Reza committed
42

xwenliang's avatar
xwenliang committed
43
    self.window = [UIApplication sharedApplication].keyWindow;
Reza's avatar
Reza committed
44

xwenliang's avatar
xwenliang committed
45 46 47 48 49 50 51 52 53
    NSString *pickerConfirmBtnText=indic[@"pickerConfirmBtnText"];
    NSString *pickerCancelBtnText=indic[@"pickerCancelBtnText"];
    NSString *pickerTitleText=indic[@"pickerTitleText"];
    NSArray *pickerConfirmBtnColor=indic[@"pickerConfirmBtnColor"];
    NSArray *pickerCancelBtnColor=indic[@"pickerCancelBtnColor"];
    NSArray *pickerTitleColor=indic[@"pickerTitleColor"];
    NSArray *pickerToolBarBg=indic[@"pickerToolBarBg"];
    NSArray *pickerBg=indic[@"pickerBg"];
    NSArray *selectArry=indic[@"selectedValue"];
54
    NSArray *weightArry=indic[@"wheelFlex"];
xwenliang's avatar
xwenliang committed
55 56 57
    NSString *pickerToolBarFontSize=[NSString stringWithFormat:@"%@",indic[@"pickerToolBarFontSize"]];
    NSString *pickerFontSize=[NSString stringWithFormat:@"%@",indic[@"pickerFontSize"]];
    NSArray *pickerFontColor=indic[@"pickerFontColor"];
58
    NSString *pickerRowHeight=indic[@"pickerRowHeight"];
xwenliang's avatar
xwenliang committed
59
    id pickerData=indic[@"pickerData"];
Reza's avatar
Reza committed
60

xwenliang's avatar
xwenliang committed
61
    NSMutableDictionary *dataDic=[[NSMutableDictionary alloc]init];
Reza's avatar
Reza committed
62

xwenliang's avatar
xwenliang committed
63
    dataDic[@"pickerData"]=pickerData;
Reza's avatar
Reza committed
64

65
    [self.window.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
Reza's avatar
Reza committed
66

xwenliang's avatar
xwenliang committed
67 68
        if ([obj isKindOfClass:[BzwPicker class]]) {
            dispatch_async(dispatch_get_main_queue(), ^{
Reza's avatar
Reza committed
69

xwenliang's avatar
xwenliang committed
70 71 72
                [obj removeFromSuperview];
            });
        }
Reza's avatar
Reza committed
73

xwenliang's avatar
xwenliang committed
74
    }];
Reza's avatar
Reza committed
75

76
    if ([[UIDevice currentDevice].systemVersion doubleValue] >= 9.0 ) {
77 78 79 80
        self.height=250;
    }else{
        self.height=220;
    }
81 82 83
    
    self.pick=[[BzwPicker alloc]initWithFrame:CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, self.height) dic:dataDic leftStr:pickerCancelBtnText centerStr:pickerTitleText rightStr:pickerConfirmBtnText topbgColor:pickerToolBarBg bottombgColor:pickerBg leftbtnbgColor:pickerCancelBtnColor rightbtnbgColor:pickerConfirmBtnColor centerbtnColor:pickerTitleColor selectValueArry:selectArry weightArry:weightArry pickerToolBarFontSize:pickerToolBarFontSize pickerFontSize:pickerFontSize pickerFontColor:pickerFontColor  pickerRowHeight: pickerRowHeight];
    
xwenliang's avatar
xwenliang committed
84
    _pick.bolock=^(NSDictionary *backinfoArry){
Reza's avatar
Reza committed
85

xwenliang's avatar
xwenliang committed
86
        dispatch_async(dispatch_get_main_queue(), ^{
Reza's avatar
Reza committed
87

xwenliang's avatar
xwenliang committed
88 89 90
            [self.bridge.eventDispatcher sendAppEventWithName:@"pickerEvent" body:backinfoArry];
        });
    };
Reza's avatar
Reza committed
91

xwenliang's avatar
xwenliang committed
92
    dispatch_async(dispatch_get_main_queue(), ^{
Reza's avatar
Reza committed
93

xwenliang's avatar
xwenliang committed
94
        [self.window addSubview:_pick];
xwenliang's avatar
xwenliang committed
95
    });
Reza's avatar
Reza committed
96

xwenliang's avatar
xwenliang committed
97 98 99 100
}

RCT_EXPORT_METHOD(show){
    if (self.pick) {
Reza's avatar
Reza committed
101

xwenliang's avatar
xwenliang committed
102 103
        dispatch_async(dispatch_get_main_queue(), ^{
            [UIView animateWithDuration:.3 animations:^{
Reza's avatar
Reza committed
104

105
                [_pick setFrame:CGRectMake(0, SCREEN_HEIGHT-self.height, SCREEN_WIDTH, self.height)];
Reza's avatar
Reza committed
106

xwenliang's avatar
xwenliang committed
107 108 109 110 111 112
            }];
        });
    }return;
}

RCT_EXPORT_METHOD(hide){
Reza's avatar
Reza committed
113

xwenliang's avatar
xwenliang committed
114 115 116
    if (self.pick) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [UIView animateWithDuration:.3 animations:^{
117
                [_pick setFrame:CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, self.height)];
xwenliang's avatar
xwenliang committed
118 119 120 121
            }];
        });
    }return;
}
jinlongtao's avatar
jinlongtao committed
122 123 124 125 126 127 128 129 130 131 132

RCT_EXPORT_METHOD(select: (NSArray*)data){

    if (self.pick) {
        dispatch_async(dispatch_get_main_queue(), ^{
            _pick.selectValueArry = data;
            [_pick selectRow];
        });
    }return;
}

xwenliang's avatar
xwenliang committed
133
RCT_EXPORT_METHOD(isPickerShow:(RCTResponseSenderBlock)getBack){
Reza's avatar
Reza committed
134

xwenliang's avatar
xwenliang committed
135
    if (self.pick) {
Reza's avatar
Reza committed
136

xwenliang's avatar
xwenliang committed
137
        CGFloat pickY=_pick.frame.origin.y;
Reza's avatar
Reza committed
138

xwenliang's avatar
xwenliang committed
139
        if (pickY==SCREEN_HEIGHT) {
Reza's avatar
Reza committed
140

xwenliang's avatar
xwenliang committed
141 142 143 144 145 146 147 148 149 150 151
            getBack(@[@YES]);
        }else
        {
            getBack(@[@NO]);
        }
    }else{
        getBack(@[@"picker不存在"]);
    }
}

@end