@property (weak, nonatomic) IBOutlet UITextField *UserID;
@property (weak, nonatomic) IBOutlet UITextField *Password;
@property (weak, nonatomic) IBOutlet UIButton *LoginBut;
 
 监听文本框中的内容的几种方式:(用于登录账号-用于搜索)
 1.代理 (只能监听设置了代理的文本框没有设置代理的文本框不能进行监听)                                                                                                              
<UITextFieldDelegate>
 
 _UserID.delegate=self(设置代理)
 
 
//是否可以编辑yes可以 no不可以
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    return YES;
}
//开始编辑的时候调用
- (void)textFieldDidBeginEditing:(UITextField *)textField{
    NSLog(@"开始编辑");
}
 
//是否允许结束编辑(当用户结束一个文本框的时候,首先会调用这个)
//如果是NO 意思就是,这个文本框回一直处于编辑状态(也叫第一响应者),就算你再点击其他文本框,是没有任何效果的
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    return YES;
}
//结束编辑的时候调用
- (void)textFieldDidEndEditing:(UITextField *)textField{
    NSLog(@"结束编辑");
}
 
//是否允许用户输入文件
//用户每次输入一个字符的时候就会调用一次。然后判断是非显示在文本框里
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
   //打印
    NSString *text=[NSString stringWithFormat:@"%@%@",textField.text,string];
    NSLog(@"------%@",text);
    return YES;
}
//是否允许清除当前文本框中所输入的内容
- (BOOL)textFieldShouldClear:(UITextField *)textField{
    return YES;
}
 
 2.通知  (可以监听所有的文本框)                                                                                                             
 
 /*
     UITextFieldTextDidChangeNotification //文本框改变的通知
     object:_UserID 表示_UserID 这一个文本框
     object:nil     表示 所有的文本框
     */
[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:nil];
 
-(void)textChange{
    NSLog(@“-----Change-----");
}
 
//当前对像要销毁的时候,创建的通知要进行移除:(否则可能报错,坏内存访问)
-(void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
 
 3.监听者(addTarget)()                                                                                                             
 
/*
     Events(事件):当我产生什么事件的时候会掉用这个方法
     UIControlEventEditingChanged : 当文本框进行编辑
     */
 
    [_UserID addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];
   
    [_Password addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];
  
}
//我把2个文本框的监听触发方法都设置为textChange 目的是判断登录按钮是否可以点击
//只有2个文本框都有值才可以进行点击(这里根据自己的需要)
-(void)textChange{
    if(_UserID.text.length && _Password.text.length){
        _LoginBut.enabled=YES;
    }else{
     _LoginBut.enabled=NO;
    }
//这个判断可以优化为一行:
    _LoginBut.enabled=_UserID.text.length && _Password.text.length;
 
    NSLog(@"gaibia-----");
}
 
 

通知与代理一起使用:
如果有5个文本框或者跟多同时监听,我想直接打印出处于编辑的那个文本框(第一响应者)是哪一个,内容是什么:
代码:
 
 
这里不需要拖线(你的storyboard 要与你的viewcontroller相关联)
 
#import "ViewController.h"
 
@interface ViewController () <UITextFieldDelegate>
 
//@property (nonatomic, strong) NSArray *TextFieldAll;//存储所有的textField
 
@property (nonatomic, strong) UITextField *newtext;//获取处于编辑状态的UITextField
@end
 
@implementation ViewController
 
 
 
 
- (void)viewDidLoad {
    //创建一个数组存储textfield
    NSMutableArray *fieldsM = [NSMutableArray array];
   
    //没有拖线
    //这句代码是获取view上的所有控件,包括label,textfield;
    NSArray *childArray=self.view.subviews;
   
    int TAG=0;//给每一个textfield设置一个tag 
    //循环遍历所有的控件
    for (UIView *child in childArray) {
       
        //找出所有的TextFieldAll
        if([child isKindOfClass:[UITextField class]]){
            //类型转换
            UITextField *textField=(UITextField *)child;
 
            //设置代理
            textField.delegate=self;
           
          //  [fieldsM addObject:textField];
 
        }
    }
 //   _TextFieldAll=fieldsM;
   
    //创建通知:监听每一个TextField
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:nil];
}
 
-(void)textChange{
    //打印处于编辑状态的TextField 和 tag
    NSLog(@"%@-%ld",_newtext.text,(long)_newtext.tag);
 
}
 
- (void)textFieldDidBeginEditing:(UITextField *)textField{
   
    _newtext=[[UITextField alloc]init];
    _newtext=textField;
   
}
 
@end
 
最后运行效果 和 打印——————————————————
 

ios 监听TextField中内容的更多相关文章

  1. iOS 监听textfield的输入(转)

    1:首先 [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEvent ...

  2. ios开发之--通过通知监听textfield的输入状态,判断按钮的状态

    第一步: _rightBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _rightBtn.frame = CGRectMake(kWidth - ...

  3. 实时监听input输入内容的N种方法

    现在有一个需求,需要我们实时监听input输入框中的内容,从而带来更好的用户体验,而不是等我们全部输入完毕才告诉我们格式不对首先我们创建一个input输入框 <form name='loginF ...

  4. Fragment-如何监听fragment中的回退事件与怎样保存fragment状态

    一.如何监听Fragment中的回退事件 1.问题阐述 在Activity中监听回退事件是件非常容易的事,因为直接重写onBackPressed()函数就好了,但当大家想要监听Fragment中的回退 ...

  5. Spring Boot 监听 Activemq 中的特定 topic ,并将数据通过 RabbitMq 发布出去

    1.Spring Boot 和 ActiveMQ .RabbitMQ 简介 最近因为公司的项目需要用到 Spring Boot , 所以自学了一下, 发现它与 Spring 相比,最大的优点就是减少了 ...

  6. js 实时监听input中值变化

    注意:用到了jquery需要引入jquery.min.js. 需求: 1.每个地方需要分别打分,总分为100; 2.第一个打分总分为40; 3.第二个打分总分为60. 注意:需要判断null.&quo ...

  7. 实时输出TextField中内容

    要想实时输出TextField中内容,要找到textField内容发现改变就会调用的函数,即 - (BOOL)textField:(UITextField *)textField shouldChan ...

  8. oracle11g的监听配置文件中的program和env两个配置,必须干掉,客户端才能正常连接

    oracle11g的监听配置文件中的program和env两个配置,必须干掉,客户端才能正常连接 oracle11g的监听配置文件中的program和env两个配置,必须干掉,客户端才能正常连接 or ...

  9. js监听文本框内容变化

    js监听文本框内容变化 原理很简单,就是在外部先声明一个用来记录input值的变量,然后每0.1秒比较这个值与input的值,如果发生改变,则运行自己的代码,同时改变变量.从而实现对input值改变的 ...

随机推荐

  1. php中的冒泡排序算法

    <?php //php中的冒泡排序算法 //从大到小的排序方式 ,$arr[$j]>$arr[$j+1](这里换成了从小到大的排序方式) $arr=array(); $arr=array( ...

  2. Administrator账户密码忘了怎么办

    WIN7的Administrator账户密码忘了怎么办   1.准备一个带有winpe系统的系统光盘或者U盘 2.启动电脑,按F12选择U盘或者光盘启动,进入winpe操作系统 3.找到c:\wind ...

  3. 编写运行最简单的java程序——使用记事本编写java程序

    第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. ...

  4. Object-C知识点 (四) 性能优化

    #pragma mark - 性能优化 1. 行高一定要缓存 缓存行高是解决性能优化的最佳途径(除非刷新频率已经很高了,否则一定要缓存)2. 尽量减少计算,所有需要素材提前计算好3. 控件不要设置圆角 ...

  5. ASP.NET Core Web API 最小化项目

    ASP.NET Core中默认的ASP.NET Core 模板中有Web API 模板可以创建Web API项目. 有时,只需要创建一个API,不需要关心Razor,本地化或XML序列化.通过删除无用 ...

  6. intellij idea 常用快捷键让你事半功倍

    为什么谈这个 工欲善其事必先利其器,键盘流是必须的,快捷键首当其冲,请收下!!! 常用快捷键列表 Live Templates 自定义代码模板 取消屏幕的翻转,可以使用ctrl+alt+左右,进行代码 ...

  7. Python数据分析之路(一)查询和统计

    0. 如何入门数据分析 关注沙漠之鹰的同学一定看过沙漠君写得很多篇数据分析文章,比如分析房价,车价,预测机动车摇号这些话题.其实文章中所有的分析都使用了Python和它非常强大的数据分析库Pandas ...

  8. Windows 10 上,Edge 浏览器不支持插件,因此将不运行 Java

    在 Windows 10 上,Edge 浏览器不支持插件,因此将不运行 Java.微软想干嘛?

  9. Opencv探索之路(十九):读写xml和yml文件

    有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理.一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作.那么如果遇到这样 ...

  10. oracle 小测

    01)oracle10i,oracle11g,oracle12c,其它i,g,c什么意思? i(Internet)互联网 g(grid)网格 c(cloud) 云02)sqlplus是什么意思? 是o ...