123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- //
- // KBPhoneFieldView.m
- // YouHuiProject
- //
- // Created by 小花 on 2018/5/21.
- // Copyright © 2018年 kuxuan. All rights reserved.
- //
- #import "KBPhoneFieldView.h"
- #import "WLCaptcheButton.h"
- #import "KBSendCodeRequest.h"
- @interface KBPhoneFieldView (){
- NSString *_union_id;
- }
- @property (nonatomic, strong) UIImageView *phoneIcon;
- @property (nonatomic, strong) UIImageView *codeIcon;
- @property (nonatomic, strong) UITextField *phoneField;
- @property (nonatomic, strong) UITextField *codeField;
- @property (nonatomic, strong) WLCaptcheButton *codeButton;
- @property (nonatomic, strong) UIView *line1;
- @property (nonatomic, strong) UIView *line2;
- @end
- @implementation KBPhoneFieldView
- - (instancetype)initWithFrame:(CGRect)frame wx_union_id:(NSString *)union_id{
- self = [super initWithFrame:frame];
- _union_id = union_id;
- if (self) {
- [self initSubView];
- [self addObserveForButtons];
- }
- return self;
- }
- - (void)initSubView {
-
- [self addSubview:self.phoneIcon];
- [self addSubview:self.codeIcon];
- [self addSubview:self.phoneField];
- [self addSubview:self.codeField];
- [self addSubview:self.codeButton];
- [self addSubview:self.line1];
- [self addSubview:self.line2];
-
- [self.phoneIcon mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(35);
- make.top.mas_equalTo(5);
- make.width.mas_equalTo(18);
- make.height.mas_equalTo(18);
- }];
-
- [self.phoneField mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.phoneIcon.mas_right).mas_offset(13);
- make.centerY.mas_equalTo(self.phoneIcon);
- make.right.mas_equalTo(-37);
- make.height.mas_equalTo(25);
- }];
-
- [self.line1 mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(38);
- make.right.mas_equalTo(-38);
- make.height.mas_equalTo(1);
- make.top.mas_equalTo(self.phoneField.mas_bottom).mas_offset(5);
- }];
-
- [self.codeIcon mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.phoneIcon);
- make.width.height.mas_equalTo(18);
- make.top.mas_equalTo(self.line1.mas_bottom).mas_offset(30);
- }];
-
- [self.codeField mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.codeIcon.mas_right).mas_offset(13);
- make.centerY.mas_equalTo(self.codeIcon);
- make.right.mas_equalTo(-130);
- make.height.mas_equalTo(25);
- }];
-
- [self.codeButton mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.mas_equalTo(-33);
- make.width.mas_equalTo(76);
- make.height.mas_equalTo(22);
- make.centerY.mas_equalTo(self.codeField);
- }];
-
- [self.line2 mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(38);
- make.right.mas_equalTo(-38);
- make.height.mas_equalTo(1);
- make.top.mas_equalTo(self.codeField.mas_bottom).mas_offset(5);
- }];
-
- }
- - (void)addObserveForButtons {
- RACSignal *textSingal = [self.phoneField.rac_textSignal map:^id(NSString * value) {
- return @(value.length >= 11);
- }];
- [textSingal subscribeNext:^(NSNumber *textActionSignal) {
-
- self.codeButton.backgroundColor = [textActionSignal boolValue] ? [UIColor whiteColor]:[UIColor YHColorWithHex:0xd8d8d8];
- self.codeButton.layer.borderColor = [textActionSignal boolValue] ? [UIColor homeRedColor].CGColor:[UIColor YHColorWithHex:0xd8d8d8].CGColor;
-
- UIColor *color = [textActionSignal boolValue] ? [UIColor homeRedColor]:[UIColor whiteColor];
- [self.codeButton setTitleColor:color forState:UIControlStateNormal];
- self.codeButton.enabled = [textActionSignal boolValue];
- }];
-
- RACSignal *textSingal2 = [self.codeField.rac_textSignal map:^id(NSString * value) {
- return @(value.length > 0);
- }];
-
- RACSignal *calculActiveSignal = [RACSignal
- combineLatest:@[textSingal,
- textSingal2]
- reduce:^id(NSNumber *textValid, NSNumber *textValid2) {
- return @([textValid boolValue] && [textValid2 boolValue] );
- }];
-
- [calculActiveSignal subscribeNext:^(NSNumber *calculEnble) {
- if (self.nextEnable) {
- self.nextEnable([calculEnble boolValue]);
- }
- }];
- }
- /**
- 发送验证码
- */
- - (void)sendCodeAction:(WLCaptcheButton *)sender {
- [self.codeField becomeFirstResponder];
-
- NSString *ttl = [PublicFunction getNowTimeTimestamp];
-
- NSString *sign = [NSString stringWithFormat:@"phone=%@&ttl=%@%@",self.phoneField.text,ttl,SignCode];
- NSString *md5Str = [PublicFunction md5:sign];
- NSDictionary *para = @{@"phone":self.phoneField.text,
- @"ttl":ttl,
- @"sign":md5Str,
- @"union_id":_union_id
- };
- [KBSendCodeRequest post:Send_Code params:para success:^(id json) {
- if (json[@"success"]) {
- [sender fire];
- }
- } failure:^(NSError *error) {
-
- }];
- }
- - (NSString *)getPhoneText {
- return self.phoneField.text;
- }
- - (NSString *)getCodeText {
- return self.codeField.text;
- }
- - (UIImageView *)phoneIcon {
- if (!_phoneIcon) {
- _phoneIcon = [[UIImageView alloc] init];
- _phoneIcon.image = [UIImage imageNamed:@"phone_icon"];
- }
- return _phoneIcon;
- }
- - (UIImageView *)codeIcon {
- if (!_codeIcon) {
- _codeIcon = [[UIImageView alloc] init];
- _codeIcon.image = [UIImage imageNamed:@"code_icon"];
- }
- return _codeIcon;
- }
- - (UITextField *)phoneField {
- if (!_phoneField) {
- _phoneField = [[UITextField alloc] init];
- _phoneField.placeholder = @"输入手机号";
- _phoneField.keyboardType = UIKeyboardTypeNumberPad;
- _phoneField.font = [UIFont systemFontOfSize:14];
- }
- return _phoneField;
- }
- - (UITextField *)codeField {
- if (!_codeField) {
- _codeField = [[UITextField alloc] init];
- _codeField.placeholder = @"输入验证码";
- _codeField.keyboardType = UIKeyboardTypeNumberPad;
- _codeField.font = [UIFont systemFontOfSize:14];
- }
- return _codeField;
- }
- - (WLCaptcheButton *)codeButton {
- if (!_codeButton) {
- _codeButton = [[WLCaptcheButton alloc] init];
- _codeButton.identifyKey = @"linkButton";
- _codeButton.layer.borderWidth = 1;
- _codeButton.layer.cornerRadius = 12;
- [_codeButton setTitle:@"获取验证码" forState:UIControlStateNormal];
- _codeButton.titleLabel.font = [UIFont systemFontOfSize:12];
- [_codeButton addTarget:self action:@selector(sendCodeAction:) forControlEvents:UIControlEventTouchUpInside];
- // _codeButton.enabled = NO;
- _codeButton.enabled = YES;
- }
- return _codeButton;
- }
- - (UIView *)line1 {
- if (!_line1) {
- _line1 = [[UIView alloc] init];
- _line1.backgroundColor = [UIColor YHColorWithHex:0xD8D8D8];
- }
- return _line1;
- }
- - (UIView *)line2 {
- if (!_line2) {
- _line2 = [[UIView alloc] init];
- _line2.backgroundColor = [UIColor YHColorWithHex:0xD8D8D8];
- }
- return _line2;
- }
- @end
|