前言
在开发中经常遇到各种需要输入手机号的地方,而每遇到一个地方就要专门写一套代码来验证手机号输入的位数及开始几位是否正确,有时为了显示的好看明显,还需要把手机号进行3-4-4这种方式显示,现在特写了LHPhoneTextFiled来支持这种特定的需求,非常感谢phoneTextField提供非常好的思路
1、 使用LHPHoneTextField非常简单,支持设置3-4-4中间的这个分隔符lh_seperatorText
,设置不标准手机字符串自动标准显示
2、而用lh_text来设置默认显示的手机号
3、而用lh_text来获取的手机号时标准的全数字手机号,不需要进行任何判断,使用非常简单,效果如下图:
4、提供一个方法判断手机号是否是标准手机号lh_IsValidatePhone
5、提供方法直接拨打电话lh_callCurrentPhone
使用方式
因为本身是继承自UITextField,所以使用起来是一样的,唯一的区别是使用lh_seperatorText
来设置3-4-4的分隔符,默认分隔符是-
,
要设置默认的手机号时使用lh_text
设置要显示的手机号,而要获取完整的全数字的手机号也需要使用lh_text
获取,具体使用如下:
@interface LHPhoneTextFieldSampleViewController ()
@property (nonatomic,strong) LHPhoneTextField * phoneTextField2;
@end
@implementation LHPhoneTextFieldSampleViewController
- (void)viewDidLoad {
self.phoneTextField2 = [[LHPhoneTextField alloc] initWithFrame:CGRectMake(90, 175, 200, 30)];
self.phoneTextField2.layer.masksToBounds = YES;
self.phoneTextField2.layer.borderColor = [UIColor redColor].CGColor;
self.phoneTextField2.layer.borderWidth = 1;
self.phoneTextField2.clearButtonMode = UITextFieldViewModeWhileEditing;
self.phoneTextField2.placeholder = @"请输入手机号";
self.phoneTextField2.lh_seperatorText = @" ";
[self.view addSubview:self.phoneTextField2];
// 值发现变化时调用
[self.phoneTextField2 addTarget:self action:@selector(textFild_textValueChange2) forControlEvents:UIControlEventValueChanged];
// 只有注册了这个通知,valueChange才会改变
//UITextFieldTextDidChangeNotification通知事件
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFild_textValueChange2) name:UITextFieldTextDidChangeNotification object:nil];
// 默认手机号,不限制格式
self.phoneTextField2.lh_text = @"131-12339323";
}
@end
具体demo:LH.LoveKit
知识点
1、对代理进行拦截二次触发
2、使用APIsendActionsForControlEvents
主动触发某个事件的所有target-action
3、获取UITextField的光标及对光标的移动