仿写一款流行的短信验证页面

仿写一款比较流行的短信验证页面,整理出下面一段非常有意思的代码.
虽然只是一个简单的页面,反复调整自认为比较OK.当然实现办法和思路不唯一,希望有兴趣的小伙伴一起品评.

Untitled.gif

用了一个 textField 和四个 label 控件
用了 textfield 的一个代理方法

Untitled2.gif

代码只有一个系统代理方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ([string isEqualToString:@""]){// 判断删除操作
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            NSLog(@"%@",textField.text);
            NSLog(@"%@",string);
            if ([string isEqualToString:@""]){// 判断删除操作
                if (textField.text. length == 0)_message1.text = string;
                if (textField.text.length == 1)_message2.text = string;
                if (textField.text.length == 2)_message3.text = string;
                if (textField.text.length == 3)_message4.text = string;
                
            }else {
                if (textField.text.length == 1)_message1.text = string;
                if (textField.text.length == 2)_message2.text = string;
                if (textField.text.length == 3)_message3.text = string;
                if (textField.text.length == 4)_message4.text = string;}});
        NSLog(@"%@",textField.text);
        NSLog(@"%@",string);
        return 1;
    }else {if (textField.text.length == 4)return 0;}
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        if ([string isEqualToString:@""]){// 判断删除操作
            if (textField.text.length == 0)_message1.text = string;
            if (textField.text.length == 1)_message2.text = string;
            if (textField.text.length == 2)_message3.text = string;
            if (textField.text.length == 3)_message4.text = string;
        }else {
            
            if (textField.text.length == 1)_message1.text = string;
            if (textField.text.length == 2)_message2.text = string;
            if (textField.text.length == 3)_message3.text = string;
            if (textField.text.length == 4)_message4.text = string;
        }
    });
    if ([string isEqualToString:@""]){// 判断删除操作
        return 1;
    }else {
        if (textField.text.length == 4)return 0;
    }
    return 1;
}

属性

@interface MKReginsterMessageController () <UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UITextField *messageTextField;
@property (weak, nonatomic) IBOutlet UILabel *message1;
@property (weak, nonatomic) IBOutlet UILabel *message2;
@property (weak, nonatomic) IBOutlet UILabel *message3;
@property (weak, nonatomic) IBOutlet UILabel *message4;
@end

小操作

textfield 的 tintcolor 设为 clear
textfield 的 textcolor 设为 clear

最后只要验证 textfield.text 文本就可以了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,764评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,378评论 4 61
  • 参考书目:《每天最重要的2小时》 [美] 乔西·戴维斯 暂停一下,给自己几分钟,想想上个星期有没有做什么事让自己印...
    哇哇来啦阅读 249评论 0 1
  • 我出生在北方的一个小镇,家里有2个姐姐和一个弟弟,父母文化程度不高,辛辛苦苦经营一家小店,养活我们几个,那时...
    Fly_zhao阅读 225评论 0 0
  • ——国旗下的谈话 一次在国旗台下和一同学谈话,他说:“人们都说我们体育生是走后门进来的,文化课什么都不会,还和其他...
    疯子_bda9阅读 571评论 0 2

友情链接更多精彩内容