• UITextField 方法和代理的使用


    1.键盘的出现与隐藏

    //弹出界面的同时就弹出键盘
    - (void)viewDidAppear:(BOOL)animated{
        [super viewDidAppear:animated];
        //弹出键盘
        [self.nameTextField becomeFirstResponder];
    }
    
    //鼠标点击一下 隐藏键盘
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        //隐藏键盘
        [self.nameTextField resignFirstResponder];
    }

    2.delegate的使用

    (1)设置

    _nameTextField.delegate = self;
    @interface ViewController ()<UITextFieldDelegate>

    (.h文件中)

    (2)使用

          1.配置是否可以输入(当textField becomeFirstResponder之前会调用这个方法)

              YES ----可以编辑 能成为第一响应者

              NO -----不可以编辑  不能成为第一响应者

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
        NSLog(@"是否可以开始编辑");
        return YES;
    }

          2.开始编辑

    //开始编辑 (点击输入框,即将开始输入内容)
    - (void)textFieldDidBeginEditing:(UITextField *)textField{
        NSLog(@"开始编辑 ");
    }
    2018-08-07 18:11:43.823 UITextField方法和delegate设置[2854:94610] 是否可以开始编辑
    2018-08-07 18:11:43.831 UITextField方法和delegate设置[2854:94610] 开始编辑 

    (1、2两步的运行结果)

          3.配置是否可以取消第一响应者  (当testField resignFirstResponder之前会调用这个方法)

                YES ----可以取消第一响应者

                NO -----不可以取消,一直在那里等待输入

    //配置是否可以取消第一响应者 是否可以停止输入内容
    - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
        NSLog(@"是否可以停止输入");
        return YES;
    }
    @

          4.停止编辑

    //停止编辑了
    - (void)textFieldDidEndEditing:(UITextField *)textField{
        NSLog(@"停止编辑");
    }

         5.键盘上的return按钮被点击

    - (BOOL)textFieldShouldReturn:(UITextField *)textField{
        NSLog(@"键盘上return按钮被点击");
        [self.nameTextField resignFirstResponder];
        return YES;
    }

    以上几步运行结果:

    2018-08-07 18:25:08.304 UITextField方法和delegate设置[2966:100607] 是否可以开始编辑
    2018-08-07 18:25:08.313 UITextField方法和delegate设置[2966:100607] 开始编辑 
    2018-08-07 18:25:13.693 UITextField方法和delegate设置[2966:100607] 键盘上return按钮被点击
    2018-08-07 18:25:13.693 UITextField方法和delegate设置[2966:100607] 是否可以停止输入
    2018-08-07 18:25:13.707 UITextField方法和delegate设置[2966:100607] 停止编辑

            6.实时监听textField上文本内容的改变(非常重要)

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(nonnull NSString *)string{
        //原来显示的内容
        NSLog(@"改变之前的内容:%@", textField.text);
        //新的内容 = 用string去替换text上range范围的内容
        NSString *newStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
        NSLog(@"即将显示的内容:%@", newStr);
        return YES;
    }

    运行结果:

    2018-08-07 18:34:27.044 UITextField方法和delegate设置[3063:104375] 是否可以开始编辑
    2018-08-07 18:34:27.052 UITextField方法和delegate设置[3063:104375] 开始编辑 
    2018-08-07 18:34:30.593 UITextField方法和delegate设置[3063:104375] 改变之前的内容:
    2018-08-07 18:34:30.594 UITextField方法和delegate设置[3063:104375] 即将显示的内容:E
    2018-08-07 18:34:34.719 UITextField方法和delegate设置[3063:104375] 改变之前的内容:E
    2018-08-07 18:34:34.719 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Ef
    2018-08-07 18:34:38.015 UITextField方法和delegate设置[3063:104375] 改变之前的内容:Ef
    2018-08-07 18:34:38.015 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Efg
    2018-08-07 18:34:39.207 UITextField方法和delegate设置[3063:104375] 改变之前的内容:Efg
    2018-08-07 18:34:39.207 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Efgh
    2018-08-07 18:34:41.103 UITextField方法和delegate设置[3063:104375] 改变之前的内容:Efgh
    2018-08-07 18:34:41.103 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Efghj
    2018-08-07 18:34:43.759 UITextField方法和delegate设置[3063:104375] 改变之前的内容:Efghj
    2018-08-07 18:34:43.760 UITextField方法和delegate设置[3063:104375] 即将显示的内容:Edging
    2018-08-07 18:34:43.763 UITextField方法和delegate设置[3063:104375] 键盘上return按钮被点击
    2018-08-07 18:34:43.763 UITextField方法和delegate设置[3063:104375] 是否可以停止输入
    2018-08-07 18:34:43.776 UITextField方法和delegate设置[3063:104375] 停止编辑
  • 相关阅读:
    殷浩详解DDD:如何避免写流水账代码?
    如何从 0 到 1 开发 PyFlink API 作业
    探秘RocketMQ源码——Series1:Producer视角看事务消息
    教父郭盛华透露:PHP编程语言中多个代码执行缺陷
    互联网用户仍然容易受到黑客社会工程学攻击
    揭秘郭盛华在世界的排名,才华与颜值并存的男神
    什么是逆向工程?黑客是如何构建可利用的漏洞?
    人工智能时代,计算机网络主要面临哪些安全威胁?
    【2020-10-01】国庆堵车不堵心
    【2020-09-30】走起来慢,但实际很快
  • 原文地址:https://www.cnblogs.com/frosting/p/9438718.html
Copyright © 2020-2023  润新知