You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

206 lines
6.0 KiB

//
// WTMeCell.m
// WTBaiSiBuDeJie
//
// Created by yuklng on 2017/1/11.
// Copyright © 2017年 yuklng. All rights reserved.
//
#import "WTMeCell.h"
#import "UIView+Extension.h"
#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
#define RGB(r,g,b) RGBA(r,g,b,1.0f)
@interface WTMeCell ()<UITextFieldDelegate>
@end
@implementation WTMeCell{
UIView* Main_View; //容器
UIView* _InputView; //二级容器
UILabel* _TypeLable; //标签label
NSInteger TextFieldLength;
}
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.textLabel.textColor = [UIColor darkGrayColor];
// self.textLabel.font = [UIFont systemFontOfSize:14];
// self.regular_text = @"^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$";
self.regular_text = @"";
_type_text = @"WTMeCell";
_cell_Identifier = reuseIdentifier;
TextFieldLength = 11;
[self createItems];
}
return self;
}
#pragma mark 视图构建方法 
-(void)createItems {
if(!Main_View){
[self.contentView addSubview:({
UIView* Cell_View =[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
Cell_View.backgroundColor = [UIColor whiteColor];
Main_View =Cell_View;
Cell_View;
})];
}
[Main_View addSubview:[self createInputView:@""]];
}
-(UIView*)createInputView:(NSString*)type_text{
NSInteger view_height =Main_View.height;
NSInteger view_width =Main_View.width;
NSInteger view_x =0;
NSInteger view_y =0; //subscript*view_height
UIView* Input_view =[[UIView alloc] init];
Input_view.x =view_x;
Input_view.y =view_y;
Input_view.width =view_width;
Input_view.height =view_height;
_InputView =Input_view;
[Input_view addSubview:({
UILabel* Input_type_view =[[UILabel alloc] init];
Input_type_view.x =10;
Input_type_view.y =0;
Input_type_view.width =Input_view.width/3;
Input_type_view.height =Input_view.height;
Input_type_view.textAlignment =NSTextAlignmentLeft;
Input_type_view.text =type_text;
UIFont* newFont =[UIFont preferredFontForTextStyle:UIFontTextStyleBody];
UIFontDescriptor* ctfFont =newFont.fontDescriptor;
NSNumber* fontString =[ctfFont objectForKey:@"NSFontSizeAttribute"];
// NSLog(@"当前使用的字体是%@",fontString);
Input_type_view.font =[UIFont systemFontOfSize:fontString.floatValue];
_TypeLable =Input_type_view;
Input_type_view;
})];
[Input_view addSubview:({
UITextField* Input_type_view =[[UITextField alloc] init];
Input_type_view.x =Input_view.width/3;
Input_type_view.y =0;
Input_type_view.width =Input_view.width;
Input_type_view.height =Input_view.height;
Input_type_view.placeholder =@"";
Input_type_view.tag =50;
Input_type_view.delegate =self;
UIFont* newFont =[UIFont preferredFontForTextStyle:UIFontTextStyleBody];
UIFontDescriptor* ctfFont =newFont.fontDescriptor;
NSNumber* fontString =[ctfFont objectForKey:@"NSFontSizeAttribute"];
// NSLog(@"当前使用的字体是%@",fontString);
Input_type_view.font =[UIFont systemFontOfSize:fontString.floatValue-2];
_InputText =Input_type_view;
Input_type_view;
})];
return Input_view;
}
#pragma mark 更新视图
-(void)upDateInputView{
NSInteger view_height =Main_View.height;
NSInteger view_width =Main_View.width;
NSInteger view_x =0;
NSInteger view_y =0;
_InputView.x =view_x;
_InputView.y =view_y;
_InputView.width =view_width;
_InputView.height =view_height;
_TypeLable.height =_InputView.height;
_InputText.height =_InputView.height;
}
-(void)setTitle:(NSString *)title cellText:(NSString*)cell_text placeholder:(NSString*)placeholder{
_TypeLable.text = title;
_InputText.text = cell_text;
_InputText.placeholder =placeholder;
}
#pragma mark UITextFieldDelegate
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string{
NSMutableString* now_text =[NSMutableString stringWithFormat:@"%@", textField.text];
if (range.length>0) {
[now_text deleteCharactersInRange:range];
}else{
[now_text insertString:string atIndex:range.location];
}
if (textField.text.length>=TextFieldLength && ![string isEqualToString:@""]) {
return NO;
}
_now_text =now_text;
// NSLog(@"length :%lu %@ range-location :%lu range-length :%lu",now_text.length,now_text,(unsigned long)range.location,(unsigned long)range.length);
if ([self validateNumber:now_text]||[self.regular_text isEqualToString:@""]) {
_isBool =YES;
}else{
_isBool =NO;
}
if (self.block) {
self.block (nil,self);
}
return YES;
}
-(void)layoutSubviews {
[super layoutSubviews];
NSInteger margin =10;
Main_View.x =margin;
Main_View.y =0;
Main_View.width =self.contentView.frame.size.width-20;
Main_View.height =self.contentView.frame.size.height;
[self upDateInputView];
}
#pragma mark 正则表达式判断
-(BOOL)validateNumber:(NSString *)text
{
NSPredicate *numberPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",self.regular_text];
return [numberPre evaluateWithObject:text];
}
#pragma mark set
-(void)setTextFieldLength:(NSInteger)length{
TextFieldLength =length;
}
@end