// // EamilTFmatchV.m // westkissMob // // Created by 王猛 on 2022/9/7. // #import "EamilTFmatchV.h" @interface EamilTFmatchV ()< UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource > @property (nonatomic, strong) UILabel *xxx_emialLab; @property(nonatomic,strong)UITableView *table; @property(nonatomic,strong)NSArray * hzArr;//后缀数组 @property(nonatomic,strong)NSMutableArray * ppMuArr;//匹配中的数组 @end @implementation EamilTFmatchV +(CGFloat)xxx_emailMatchVheight{ return 120+50; } - (void)tt_configDefault{ _hzArr = @[@"@gmail.com",@"@hotmall.com",@"@yahoo.com",@"@icloud.com",@"@outlook.com",@"@aolp.com",@"@zoho.com",@"@inbox.com",@"@mail.com"]; _ppMuArr = [[NSMutableArray alloc]init]; } - (void)tt_setupViews{ [self addSubview:self.xxx_emailTF]; [self addSubview:self.xxx_emialLab]; [self addSubview:self.table]; } #pragma mark - **************** UITextFieldDelegate **************** -(void)textFieldDidEndEditing:(UITextField *)textField{ NSLog(@"-------%@",self.xxx_emailTF.text); if (textField == self.xxx_emailTF) { if (![Current_normalTool xxx_isValidateEmail:self.xxx_emailTF.text]) { self.xxx_emialLab.hidden = NO; }else{ self.xxx_emialLab.hidden = YES; } self.table.hidden = YES; self.mj_h = 50; } } ///文本框字符变化时 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ self.table.hidden = NO; self.mj_h = 120+50; if (!range.length){ if ([string isEqualToString:@"@"] || [textField.text containsString:@"@"]) { self.table.hidden = YES; self.mj_h = 50; }else{ _ppMuArr = [[NSMutableArray alloc]init]; [_hzArr enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL * _Nonnull stop) { NSString * ppString = [textField.text stringByAppendingString:[NSString stringWithFormat:@"%@%@",string,obj]]; [self.ppMuArr addObject:ppString]; }]; } }else{ _ppMuArr = [[NSMutableArray alloc]init]; if (textField.text.length - 1 == 0 || [textField.text containsString:@"@"]) { self.table.hidden = YES; self.mj_h = 50; }else{ [_hzArr enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL * _Nonnull stop) { NSString *matchStr = [textField.text substringToIndex:(textField.text.length - 1)]; NSString * ppString = [NSString stringWithFormat:@"%@%@",matchStr,obj]; [self.ppMuArr addObject:ppString]; }]; } } [self.table reloadData]; return YES; } - (BOOL)textFieldShouldClear:(UITextField *)textField{ self.table.hidden = YES; self.mj_h = 50; return YES; } // 进入编辑状态是否需要匹配 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ if (textField.text.length != 0){ self.table.hidden = NO; self.mj_h = 120+50; [self.table reloadData]; } return YES; } #pragma mark dataSource method and delegate method - (NSInteger)tableView:(UITableView*)table numberOfRowsInSection:(NSInteger)section{ return self.ppMuArr.count; } - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ static NSString * cellIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } cell.textLabel.text = self.ppMuArr[indexPath.row]; cell.textLabel.textAlignment = NSTextAlignmentCenter; cell.textLabel.font = [UIFont systemFontOfSize:14]; return cell; } - (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{ return 30; } - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{ // 将完整email填入输入框 self.xxx_emailTF.text = self.ppMuArr[indexPath.row]; self.table.hidden = YES; self.mj_h = 50; if (![Current_normalTool xxx_isValidateEmail:self.xxx_emailTF.text]) { self.xxx_emialLab.hidden = NO; }else{ self.xxx_emialLab.hidden = YES; } } -(TT_CustonTF *)xxx_emailTF{ if (!_xxx_emailTF) { _xxx_emailTF = [TT_ControlTool FTT_ControlToolUITextFieldFrame:CGRectMake(20, 0, KScreenWidth-40, 50) PlaceHolder:@"* EMAIl" andLifImage:nil AndRightImage:nil LiftImageFrame:CGRectZero RightImageFrame:CGRectZero AndTag:0 AndKeyboardType:UIKeyboardTypeDefault clearButtonMode:UITextFieldViewModeAlways AndReturnKeyType:UIReturnKeyDone masksToBounds:YES conrenRadius:4 BorderColor:[UIColor colorWithHexString:@"#000000"] BorderWidth:1]; _xxx_emailTF.delegate = self; } return _xxx_emailTF; } -(UILabel *)xxx_emialLab{ if (!_xxx_emialLab) { _xxx_emialLab = [UILabel new]; _xxx_emialLab.frame = CGRectMake(20, 50, KScreenWidth-40, 20); _xxx_emialLab.textColor = [UIColor colorWithHexString:@"#bf1221"]; _xxx_emialLab.textAlignment = NSTextAlignmentCenter; _xxx_emialLab.backgroundColor= [UIColor clearColor]; _xxx_emialLab.text = @"* Please prvide an email address."; _xxx_emialLab.font = [UIFont systemFontOfSize:12]; _xxx_emialLab.hidden = YES; } return _xxx_emialLab; } -(UITableView *)table{ if (!_table) { _table = [[UITableView alloc] initWithFrame:CGRectMake(20,50,KScreenWidth-40,120)]; _table.separatorStyle = UITableViewCellSeparatorStyleNone; _table.dataSource=self; _table.delegate=self; _table.hidden = YES; self.mj_h = 50; } return _table; } @end