UITextField 实现手机号码中自动添加@“-”

最新项目中要实现手机号码格式为(XXX-XXXX-XXXX)的效果,在查阅了一些资料后我把自己的代码贴出来与大家一起分享下。

@implementation CustomStyleOneView {

   NSInteger i;//定义全局变量
}

self.nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(self.nameLab.frame) + 12 * HMWidth, 0, self.frame.size.width - CGRectGetMaxX(self.nameLab.frame) - 75 * HMWidth, self.frame.size.height / 2 - HMHeight)];
self.nameTextField.keyboardType = UIKeyboardTypeASCIICapableNumberPad;
self.nameTextField.placeholder = @"请输入正确的手机号";
self.nameTextField.font = [UIFont systemFontOfSize:15];
self.nameTextField.textColor = [UIColor hx_colorWithHexRGBAString:@"#212121"];

[self.nameTextField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged];

self.nameTextField.delegate = self;
[self addSubview:self.nameTextField];


#pragma mark - TextField 电话号自动加 "-"
/**
 //备注:当到第四位或第九位时,如果此时是正在输入,则自动增加空格,如果正在删除,则自动删除空格!!!
 //当到第13位时,截取前面的13位字符串,收起键盘
 //若想要获取输入的手机,需要先删除空格; NSString *textFieldStr =[self.textField.textstringByReplacingOccurrencesOfString:@" "withString:@""];
 */
- (void)textFieldDidChanged:(UITextField *)textField{

if (textField == self.nameTextField) {
    
    if (textField.text.length > i) {
        
        if (textField.text.length == 4 || textField.text.length == 9 ) {//输入
            
            NSMutableString * str = [[NSMutableString alloc ] initWithString:textField.text];
            [str insertString:@"-" atIndex:(textField.text.length-1)];
            
            textField.text = str;
        }if (textField.text.length >= 13 ) {//输入完成
            
            textField.text = [textField.text substringToIndex:13];
            
            [textField resignFirstResponder];
            
            
        }
        i = textField.text.length;

    }else if (textField.text.length < i){//删除
        
        if (textField.text.length == 4 || textField.text.length == 9) {
            
            textField.text = [NSString stringWithFormat:@"%@",textField.text];
            
            textField.text = [textField.text substringToIndex:(textField.text.length-1)];
        }
        
        i = textField.text.length;
    }
}else if (textField == self.verifcationTextField) {
    
    /**验证码大于4位跳出焦点*/
    if (textField.text.length >= 4) {
        
        [textField resignFirstResponder];

        NSString *str = self.nameTextField.text;
        str = [str stringByReplacingOccurrencesOfString:@"-" withString:@""];
        
        self.accountBlock(str, self.verifcationTextField.text);
    }
}
}

效果图如下:


效果图.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,827评论 25 709
  • 一、评论。别人不靠你活着,何况你未必了解他的全部,论人长短不如取人之长补己之短。 二、责怪。责怪人人都会,却无法改...
    金银林阅读 153评论 0 0
  • 今天我看到朋友发的关于胡歌留学日本被杀案,做为父母,我的心情也很难过,特别是现场当事人刘鑫一家人的行为,更是...
    赵迅妈妈阅读 140评论 0 0
  • 今天,我把学生的一篇作文《那些流年里的挽歌》稍作修改,发到简书上去,投到《散文》栏目中,马上就被录用了。而且被收入...
    莜薇阅读 429评论 1 2
  • 这世上有没有一个人,大家都觉得她坏,她不好。甚至偶尔你自己也会不喜欢她...可是这个人对你是真的好,甚至不次...
    曼曼冰冰阅读 108评论 1 0