• 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] 停止编辑
  • 相关阅读:
    idea 编译内存溢出
    版本兼容问题 用于数据存储的持久化
    java8 函数接口
    akka 的集群访问方式
    Akka Cluster Sharding
    讨厌的adb占用
    安卓编译 签名包
    linux 系统的 cache 过大,解决方案
    kotlin 简单处理 回调参数 加?
    HTML CSS + DIV实现局部布局
  • 原文地址:https://www.cnblogs.com/frosting/p/9438718.html
Copyright © 2020-2023  润新知