addTarget方式和UITextFieldDelegate方式监听文本框浅析

如图所示:

  • 在开发中,一般都要监听账号对应的输入文本框和密码对应的文本框同时有值,才能让登录按钮可以点击,这个时候就有两种办法了,一种是通过UITextFieldDelegate方法监听,一种是通过addTarget方法监听,可能大多数人有和笔者相同的疑问,是不是都可以呢?那么笔者通过实验来说明情况:

  • 首先通过UITextFieldDelegate方式监听

    //当账号与密码同时有值,登录按钮才能够点击
    self.accountTextF.delegate = self;
    self.pwdTextF.delegate = self;

    点击文本框的时候会自动调用该方法
    //是否允许改变文字.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSLog(@"accountTextF==%@",self.accountTextF.text);
    NSLog(@"----%@",string);
    if (self.accountTextF.text.length && self.pwdTextF.text.length) {
        self.loginBtn.enabled = YES;
    }else {
        self.loginBtn.enabled = NO;
    }

    return YES;
}

  • 上面笔者把账号对应的属性里面保存的值self.accountTextF.text,和string的值打印了一下,如图所示,

  • 细心的读者可能已经发现了,值不一样,不同步,self.accountTextF.text的值比string的值慢了一拍,这样就不行了,为什么因为如果我通过每个文本框的长度去判断有没有值的时候,比如我就在账号文本框里面输入了一个字符a,按道理,我的账号文本框的长度应该是1,可是刚刚通过打印,发现长度应该是0,那么在里面进行一些逻辑业务的判断是错误的,好了,接下来看addTarget方式

  • 通过addTarget方式监听

[self.accountTextF addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];
[self.pwdTextF addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];

//当文本内容改变时调用
- (void)textChange
{
     NSLog(@"accountTextF==%@",self.accountTextF.text);
    //当账号与密码同时有值,登录按钮才能够点击
    self.loginBtn.enabled = self.accountTextF.text.length && self.pwdTextF.text.length;

}

效果图片:


看到没有,账号文本框中输入一个字符a,控制台就打印一个字符a,两者保持同步,所以在里面进行一些逻辑业务的判断,没有问题,所以最终结论是,只能用addTarget方式,不能用UITextFieldDelegate方式,谢谢大家

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

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,200评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,270评论 25 709
  • WorldTrotter 看起来不错,但到目前为止它并没有做任何事情。 在本章中,您将向 WorldTrotter...
    titvax阅读 3,931评论 0 0
  • (一) 年年元宵难聚,时常上班挣钱。 眼前烟花绚丽,心中风雨常驻。 (二) 天天都在工地,相思漫了高墙。...
    你好疯子_fdf3阅读 2,720评论 0 0
  • 请和我一起放松喝茶
    竹竽阅读 1,319评论 0 0