zoukankan      html  css  js  c++  java
  • 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 ” (这个代表可以输入数字和换行,请注意这个 ,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入 ,好惨,我在项目中才发现的。)

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

    #define kAlphaNum   @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。

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

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

  • 相关阅读:
    Asp.Net图片上传
    JQuery实现CheckBox全选全不选
    DES加密解密公用方法(详细注释)
    sysobjects
    window.onload和$(document).ready()区别
    Ajaxpro2 实现三级联动
    idea Mac版过期处理方法.适用于JetBrains全家桶
    rabbitmq报错Failed to start RabbitMQ broker
    pip install image 失败,加上国内源
    关于系统程序员的一些感悟
  • 原文地址:https://www.cnblogs.com/xiayao/p/5297625.html
Copyright © 2011-2022 走看看