-(UITextField*)createField:(NSString*)placeholder andTag:(int)tag andFont:(double)font{

    UITextField * field =[[UITextField alloc]init];
field.frame = CGRectMake(, , Main_Width-, );
field.delegate = self;
field.userInteractionEnabled = YES;
field.textAlignment = NSTextAlignmentLeft;
field.keyboardType = UIKeyboardTypeDefault;
// field.returnKeyType = UIReturnKeySend;
field.tag = tag;
field.placeholder =placeholder;
// field.text = placeholder;
field.textColor = littleBlackColor;
[field setFont:[UIFont fontWithName:@"STHeitiSC" size:font]];
[field addTarget:self action:@selector(textFieldWithText:) forControlEvents:UIControlEventEditingChanged];
return field;
}
-(void)textFieldWithText:(UITextField *)textField{

    UITextField * field = (UITextField*)textField;
switch (textField.tag) {
case ://发车单位/收车单位
if ([self textField:field shouldChangeCharactersInRange:NSMakeRange(, ) replacementString:@""]) {
[dic setObject:field.text forKey:@"unitname"]; //送达单位、收车单位
}
break;
case : //联系人
if ([self textField:field shouldChangeCharactersInRange:NSMakeRange(, ) replacementString:@""]) {
[dic setObject:field.text forKey:@"contact"];
}
break;
case ://联系电话
if ([self textField:field shouldChangeCharactersInRange:NSMakeRange(, ) replacementString:@""]) {
[dic setObject:field.text forKey:@"phone"];
}
break;
case ://详细地址
if ([self textField:field shouldChangeCharactersInRange:NSMakeRange(, ) replacementString:@""]) {
[dic setObject:field.text forKey:@"address"];
}
break;
default:
break;
}
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
{
//string就是此时输入的那个字符textField就是此时正在输入的那个输入框返回YES就是可以改变输入框的值NO相反
if ([string isEqualToString:@"\n"]) //按会车可以改变
{
return YES;
}
NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string]; //得到输入框的内容
switch (textField.tag) {
case ://发车单位/收车单位
if ([toBeString length] > ) {
textField.text = [toBeString substringToIndex:];
[self createUIAlertController:@"单位输入不能超过20个字符"];
return NO;
}
break;
case : //联系人
if ([toBeString length] > ) {
textField.text = [toBeString substringToIndex:];
[self createUIAlertController:@"联系人输入不能超过10个字符"];
return NO;
}
break;
case ://联系电话
if ([toBeString length] > ) {
textField.text = [toBeString substringToIndex:];
[self createUIAlertController:@"联系电话输入不能超过11个字符"];
return NO;
}
break;
case ://详细地址
if ([toBeString length] > ) {
textField.text = [toBeString substringToIndex:];
[self createUIAlertController:@"详细地址输入不能超过30个字符"];
return NO;
}
break;
default:
break;
} return YES;
}

uitextfield输入字符限制的更多相关文章

  1. iOS 限制UITextField输入字符

    开篇 之前做过一个即时通信的项目,需要限制输入框文本的字符个数,当时从网络上搜寻了几个方法,解决了需求,但是网络上的解决办法不是很全面:今天又遇到一个限制搜索框UISearchBar输入字符个数的问题 ...

  2. 限制UITextField输入内容的长度

    一.前言 今天做手机号输入限制长度,例如我的textfield只能输入11位,如果再多输入的话就不再textfield中显示,只显示11位的手机号. 如果用ReactiveCocoa的话,这个很好解决 ...

  3. UITextView 和 UITextField限制字符数和表情符号

    UITextField限制字符数 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)r ...

  4. EditText限制输入字符类型的几种方式

    最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下: 1.第一种方式是通过EditText的inputType来实现,可以通过xml或者Java文件来设置.假如我 ...

  5. BufferedReader,缓冲输入字符流

    1. /** * 输入字符流: * --------|Reader 所有输入字符流的基类.抽象类 * -----------|FileReader 读取文件字符串的输入字符流. * --------- ...

  6. 终端I/O之特殊输入字符

    POSIX.1定义了11个在输入时作特殊处理的字符.实现定义了另外一些特殊字符.表18-6摘要列出了这些特殊字符. 表18-6 终端特殊输入字符 在POSIX.1的11个特殊字符中,可将其中9个更改为 ...

  7. textarea中限制输入字符长度

    要在textarea中限制输入字符的长度,比如在twitter中要限制字符为140个,可实现的方法有: 1. <textarea name="A" cols="45 ...

  8. Android EditText的输入监听,输入字符的动态获取

    http://itindex.net/detail/38974-android-edittext-%E7%9B%91%E5%90%AC 有时候我们可能会用到时时的监听EditText输入字符的时时监听 ...

  9. while死循环问题-输入字符就会死循环

    问题: 是否会遇到这样的问题,在while循环中 sanf("%d",&a);如果输入的不是数字,是字符就会进入死循环. 解决方案:都是缓冲区惹的祸,输入字符后,字符会一直 ...

随机推荐

  1. 联系旭日150安装CentOS5.X版本手记

    有一台旧电脑.想装个Linux.于是上网查了查.据说可以装CentOS5.3.于是我就去下载了一个. 下载地址可以到http://www.centoscn.com/去下载. 我先下载的是5.3版本的I ...

  2. linux下安装pymssql

    WIN下安装PYMSSQL,由于我没有系统管理权限,无法安装, 那只好在LINUX下面安装罗.. 以下这个文章帮助我搞定. http://blog.csdn.net/five3/article/det ...

  3. How to enable logging

    转自:https://www.chromium.org/for-testers/enable-logging How to enable logging To enable logging, laun ...

  4. /dev/tty /dev/ttyS0 /dev/tty0区别 (转载)

    1.串行端口终端(/dev/ttySn)     串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备.    计算机把每个串行端口都看作是一个字符设备.有段时间 ...

  5. poj 3140(树形dp)

    题目链接:http://poj.org/problem?id=3140 思路:简单树形dp题,dp[u]表示以u为根的子树的人数和. #include<iostream> #include ...

  6. mysql指定某行或者某列的排序

    方法: 通过desc: 都无法实现: 方法一: select sp.productid,sp.productname,ss.sku from sp_product sp inner join sku_ ...

  7. c# 基础(重写与覆盖:接口与抽象,虚函数与抽象函数)

    总结 1:不管是重写还是覆盖都不会影响父类自身的功能(废话,肯定的嘛,除非代码被改). 2:当用子类创建父类的时候,如 C1 c3 = new C2(),重写会改变父类的功能,即调用子类的功能:而覆盖 ...

  8. GC日志介绍

    每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样.但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志: 33. ...

  9. http://www.roncoo.com/article/detail/124822

    http://www.roncoo.com/article/detail/124822

  10. 贪心 Codeforces Round #301 (Div. 2) A. Combination Lock

    题目传送门 /* 贪心水题:累加到目标数字的距离,两头找取最小值 */ #include <cstdio> #include <iostream> #include <a ...