RCTBEEPickerManager.m 4.44 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
    NSString *pickerToolBarFontSize=[NSString stringWithFormat:@"%@",indic[@"pickerToolBarFontSize"]];
    NSString *pickerFontSize=[NSString stringWithFormat:@"%@",indic[@"pickerFontSize"]];
57
    NSString *pickerFontFamily=[NSString stringWithFormat:@"%@",indic[@"pickerFontFamily"]];
xwenliang's avatar
xwenliang committed
58
    NSArray *pickerFontColor=indic[@"pickerFontColor"];
59
    NSString *pickerRowHeight=indic[@"pickerRowHeight"];
xwenliang's avatar
xwenliang committed
60
    id pickerData=indic[@"pickerData"];
Reza's avatar
Reza committed
61

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

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

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

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

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

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

77
    if ([[UIDevice currentDevice].systemVersion doubleValue] >= 9.0 ) {
78 79 80 81
        self.height=250;
    }else{
        self.height=220;
    }
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 pickerFontFamily:pickerFontFamily];
84
    
xwenliang's avatar
xwenliang committed
85
    _pick.bolock=^(NSDictionary *backinfoArry){
Reza's avatar
Reza committed
86

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

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

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

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

xwenliang's avatar
xwenliang committed
98 99 100 101
}

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

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

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

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

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

xwenliang's avatar
xwenliang committed
115 116 117
    if (self.pick) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [UIView animateWithDuration:.3 animations:^{
118
                [_pick setFrame:CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, self.height)];
xwenliang's avatar
xwenliang committed
119 120
            }];
        });
121 122 123 124
    }

    self.pick.hidden=YES;

125
    return;
xwenliang's avatar
xwenliang committed
126
}
jinlongtao's avatar
jinlongtao committed
127 128 129 130 131 132 133 134 135 136 137

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
138
RCT_EXPORT_METHOD(isPickerShow:(RCTResponseSenderBlock)getBack){
Reza's avatar
Reza committed
139

xwenliang's avatar
xwenliang committed
140
    if (self.pick) {
Reza's avatar
Reza committed
141

xwenliang's avatar
xwenliang committed
142
        CGFloat pickY=_pick.frame.origin.y;
Reza's avatar
Reza committed
143

xwenliang's avatar
xwenliang committed
144
        if (pickY==SCREEN_HEIGHT) {
Reza's avatar
Reza committed
145

xwenliang's avatar
xwenliang committed
146 147 148 149 150 151 152 153 154 155 156
            getBack(@[@YES]);
        }else
        {
            getBack(@[@NO]);
        }
    }else{
        getBack(@[@"picker不存在"]);
    }
}

@end