UITextField限制输入的方法(转)

常常开发应用的时候,希望UITextField能限制输入的内容,比如纯数字,或者英文加数字。当然iPhone可以直接限定键盘,但iPad就不理想,即使你把键盘设成Phone Pad,Number Pad之类的,至少都会出现定可以输入括号,@号之类的。但我们在应用中如果要求输入纯数字,或者有其他类的要求,怎么办呢?我给出一个解决方案(高手请路过,下面会讲的比较罗嗦):

原理:实现UITextField委托中的 “-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string” 方法。

首先,在头文件中加入UITextFieldDelegate委托,在IB中将UITextField的委托指向File’s Owner。好了,设好委托了,然后在.m文件中实现“-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string”,代码:

 1 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
 2     NSCharacterSet *cs;
 3     cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
 4
 5     NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];
 6
 7     BOOL canChange = [string isEqualToString:filtered];
 8
 9     return canChange;
10 }

上面那个NUMBERS是一个宏,可以在文件顶部定义:

#define NUMBERS @”0123456789\n” (这个代表可以输入数字和换行,请注意这个\n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入\n,好惨,我在项目中才发现的。)

所以,如果你要限制输入英文和数字的话,就可以把这个定义为:

#define kAlphaNum   @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。

当然,你还可以在以上方法return之前,做一提示的,比如提示用户只能输入数字之类的。如果你觉得有需要的话。

转自:http://www.cnblogs.com/duchengdong/archive/2012/06/09/2542796.html

时间: 2024-11-05 20:26:49

UITextField限制输入的方法(转)的相关文章

iOS UITextField完成输入后关闭键盘的方法总结

// //  ViewController.swift //  UITextField完成输入后关闭键盘的方法 // //  Created by 悦兑科技 on 15/1/19. //  Copyright (c) 2015年 BSY. All rights reserved. // import UIKit class ViewController: UIViewController,UITextFieldDelegate { var textF = UITextField() overri

如何更好地限制一个UITextField的输入长度

要限制一个UITextField的输入字数(参考链接),首先想到的应该是通过 UITextFieldDelegate 的代理方法来限制: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; return NO to not change text 比如要设置字数限制为20: - (BOOL)text

UITextField限制输入中文字数

前面写一了篇,UITextField Category来限制输入的字数,是有个Bug的,要输入中文时会crash.现在修改 了下,代码如下 .h文件 #import <UIKit/UIKit.h> @interface UITextField (LimitLength) /** * 使用时只要调用此方法,加上一个长度(int),就可以实现了字数限制,汉字不可以 * * @param length */ - (void)limitTextLength:(int)length; /** * uit

UITextField监控文字变化方法

项目里需要在不隐藏键盘的情况下,来更改button 的状态. 这里就是要对uitextfield监控,uitextfield继承于UIControl,所以可以 使用addTarget方法,具体如下. 1,在textFieldDidBeginEditing增加 -(void)textFieldDidBeginEditing:(UITextField *)textField { [m_phoneNum addTarget:self action:@selector(textLengthChange:

初学java---第二课《接收控制台(console)输入的方法》

/**接收控制台(console)输入的方法 [1] import java.util.Scanner; [2] Scanner scan = new Scanner(System.in); int m = scan.nextInt(); //此时,m为接收到的用户输入 */ import java.util.Scanner; class Times{ public static void main(String[] args){ Scanner scan = new Scanner(Syste

Java和C#输入输出流方法

1,JAVA中操作方法: import java.io.*; public class FileInputStreamTest { public static void main(String[] args) throws IOException { //创建字节输入流 FileInputStream fis = new FileInputStream("FileInputStreamTest.java"); //创建一个长度为1024的竹筒 byte[] bbuf = new byt

iOS UITextField限制输入数字

有时候项目中要求文本框中只能输入数字,如:价格.公里数.费用等等,一般的文本框不限制输入的格式,这时候只能强制限制输入框的输入格式了,代码如下: #import "ViewController.h" @interface ViewController ()<UITextFieldDelegate>{         UITextField *numTextField;} @end @implementation ViewController - (void)viewDidL

java中取得用户输入的方法

java中取得用户输入的方法 1.采用java.util.Scanner类 采用Scannerd的next()方法读取,测试代码如下: Scanner sc=new Scanner(System.in); System.out.println("waiting inputchar:"); String n=sc.next(); System.out.println(n); 当然记得在上面引入相关包: import java.util.Scanner; 2.采用BufferedReade

Java键盘输入的方法

转载:http://blog.csdn.net/u012249177/article/details/49586383 java输入的方法: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class EnterTest { public static void main(String[] ar