@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. css的各种选择器

    一.基本选择器 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元素 4. #foot ...

  2. nginx常用配置系列-HTTPS配置

    接上篇,nginx配置系列 HTTPS现在已经很流行,特别是AppStore上线的应用要求使用HTTPS进行通信,出于安全考虑也应该使用HTTPS,HTTPS配置需要准备证书文件,现在也有很多免费证书 ...

  3. 针对Oracle数据库表中的数据的常见操作

    1.查询表中所有数据 select * from 表名; 例:select * from stu; 2.查询的同时修改表中数据 select * from 表名  for update; 例:sele ...

  4. 【ASP.NET MVC 牛刀小试】 URL Route

    例子引入 先看看如下例子,你能完全明白吗? using System; using System.Collections.Generic; using System.Linq; using Syste ...

  5. 安装Dubbo管理控制台

    样例参考视频:http://www.roncoo.com/course/view/f614343765bc4aac8597c6d8b38f06fd Dubbo管控台可以对注册到zookeeper注册中 ...

  6. ci框架中输出sql语句

  7. Linux终端类型

    unix是一个多用户多任务的操作系统.早期电脑昂贵,所以当时使用便宜的设备连接到电脑上(当时还没有键盘和显示器,使用纸带和卡片来输入输出)来使用操作系统,这个便宜的设备就是终端,也可以认为终端是一种控 ...

  8. 【Android Developers Training】 33. 接收来自其它应用的简单数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  9. 可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术

    可满足性模块理论(SMT)基础 - 01 - 自动机和斯皮尔伯格算术 前言 如果,我们只给出一个数学问题的(比如一道数独题)约束条件,是否有程序可以自动求出一个解? 可满足性模理论(SMT - Sat ...

  10. pouchdb-all-dbs插件

    pouchdb-all-dbs插件 用来获取所有数据库的名字列表 https://github.com/nolanlawson/pouchdb-all-dbs 使用方法 1.引入js文件(顺序如下) ...