监测UITextField的变化

监测UITextField的变化可以为UIControlEventEditingChanged事件添加target。

我们有时候会需要用到这个需求:输入框输入文本超过xx长度,不再允许输入其他内容!

UITextField 代理方法本身是无法满足这个需求的。(当然你可以给UITextView添加placeholder实现相同的需求,此处不做介绍。)

示例代码如下:

    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(20.f, 100.f, CGRectGetWidth(self.view.frame) - 40.f, 30.f)];
    textField.backgroundColor = [UIColor whiteColor];
    textField.placeholder = @"placeholder_King";
    [self.view addSubview:textField];
    // 添加 UIControlEventEditingChanged  target事件,即可实时监测textField 内容,并做一些操作
    [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange:(UITextField *)textField {
    // 文本输入长度 > 6 时,不再允许输入其他内容
    NSMutableString *tempStr = [NSMutableString stringWithString:textField.text];
    if (tempStr.length > 6) {
        NSRange range = NSMakeRange(6, 1);
        [tempStr deleteCharactersInRange:range];
    }
    textField.text = tempStr;
}

参考资料:

传送门一(Swift)

传送门二(OC)

时间: 2024-08-27 23:45:01

监测UITextField的变化的相关文章

SQL点滴24—监测表的变化

原文:SQL点滴24-监测表的变化(转载) 在网上看到一篇关于监测表中的插入,更新,删除的方法,使用触发器实现的,很有价值. 地址:http://www.dbaunion.com/u/livecoach/Blog.aspx/t-19 有时候,我们在某一重要的时间段需要监控某张表的变化情况,包含插入.更新.删除.举例来说,当我们把数据导出到外部的系统时,我们希望导出的是全部的数据,而且最好是导出上次导出之后变动的数据. 作为DBA,我们可采传统的触发器操作,来构建一个元数据表或一个时间戳列来监控数

浅谈UitextField值变化的实时监视

textField的内容变化时 再用textFieldDidBeginEditing或者textFieldShouldReturn是没有用的,这时候就要考虑到给textField加监听了. 一般加监听分三种 一.KVO [textField addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil]; 二.直接添加监听 [textField addTarget:self  a

如何监测一个对象的变化

熟悉vue和react的大家应该都知道,当数据变化的时候,我们会触发相应的DOM更新,那有没有思考过,怎么样监听到一个对象属性的变化呢? 答案是,ES5中提供了一个函数,Object.defineProperty(obj, key, {属性}) let obj = {name: 'hello'} Object.defineProperty(obj, 'name', { configurable: true, // 表示能否通过delete删除属性默认为true enumerable: true,

Android数据库内容变化的监听

首先介绍内容监测的基本模式 基于uri的内容监测的基本模式被android.content.ContentResolver实现. 它为基于Uri的内容监测的提供了一个平台.(其实如果有必要,我们可以自己实现一个)ContentResolver为此提供了三个方法:注册监听器到某个uripublic final void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)

NET控件Designer架构设计

总体结构 Designer总体上由三大部分组成:View,ViewModel和Model,这个结构借鉴了流行的MVVM模式.这三部分的职责分工是: View 负责把ViewModel以图形的方式展现出来,它主要在处理画法.View适合用xaml来表达,对于某些复杂的layout,仍然会需要写一些code,但这些code不涉及业务逻辑.和MVVM的区别是,我们只是在简单输入的情况下,采用了Behavior模式,对于复杂的输入,由于判断用户的意图需要参考许多其它信息,可能要用到很多Service,或

Android附近基站+Wifi+IP+GPS多渠道定位方案

前言: 在移动客户端的开发中,地理位置定位是一个非常重要的环节,有些时候用户可能会限制web app或者Android app的一些权限,或者由于信号不佳的原因无法获得准确的GPS位置,甚至为了省电,用户可能对开启GPS开关可能会有抵触情绪.但是不能因为GPS的种种限制就放弃了对用户位置的追踪.要通过一切能发送出信号的物体尽可能准确的获取到用户的位置,有时可以牺牲一些精度,对于大数据和用户地区分布分析来说,有一个大体的位置已经够分析人员使用,而且绕开GPS的重重壁垒,为数据的完整性提供可靠方案

ReactiveCocoa框架下的MVVM模式解读

记录一些MVVM文章中关于ReactiveCocoa的代码: 实例一:带有分页的文章列表,根据文章类别过滤出文章的列表,可以进入文章详细页面 1:YFBlogListViewModel 首先了解关于列表的ViewModel的代码内容: #import <Foundation/Foundation.h> #import <ReactiveCocoa.h> @class YFCategoryArticleListModel; /** * 文章列表的视图模型. */ @interface

手机卫士03_手势动作_广播接收者应用

//在控件上面按ctrl+1 可以抽取样式 1,设置向导界面的细节问题 1.1设置向导界面的跳转的时候要记得finsh(),把当前界面从任务栈中移除. 在设置向导界面的任何一个界面返回都应该返回home界面 1.2 Activity界面切换的动画 目标:本界面向左移出了屏幕,下一个界面从右边移出来(类似翻页效果) ovreridePendingTransition(进入动画文件资源id,退出动画文件资源id); //这个方法在startActivity,或finsh()后调用,可以更改动画变化的

Swift基础(类,结构体,函数)

import Foundation // 创建一个类 class Student { // 属性(类的属性必须赋初值,如果不赋值,需要写自定义方法) var studentName: String var studentAge: Int // 方法 func fallInLove(girlName:String) { print("\(self.studentName)看上隔壁的\(girlName)") } // 构造方法(自定义init方法) init (studentName1: