关于textfield(2)

转载 2016年08月28日 20:00:02

关于textfield输入电话号码

       通过添加UITextFieldDelegate代理方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:
(NSString *)string {
    return [self validateNumber:string];
}
 
- (BOOL)validateNumber:(NSString*)number {
    BOOL res = YES;
    NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
    int i = 0;
    while (i < number.length) {
        NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
        NSRange range = [string rangeOfCharacterFromSet:tmpSet];
        if (range.length == 0) {
            res = NO;
            break;
        }
        i++;
    }
    return res;
}

关于textfield输入身份正号  最后一位x的解决办法



- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {  
    // string.length为0,表明没有输入字符,应该是正在删除,应该返回YES。  
    if (string.length == 0) {  
        return YES;  
    }  
    // length为当前输入框中的字符长度  
    NSUInteger length = textField.text.length + string.length;  
    // 如果该页面中还有其他的输入框,则需要做这个判断  
    if (textField == self.idNumberTextField) {  
        // str为当前输入框中的字符  
        NSString *str = [NSString stringWithFormat:@"%@%@", textField.text, string];  
        // 当输入到17位数的时候,通过theLastIsX方法判断最后一位是不是X  
        if (length == 17 && [self theLastIsX:str]) {  
            // 如果是17位,并通过前17位计算出18位为X,自动补全,并返回NO,禁止编辑。  
            textField.text = [NSString stringWithFormat:@"%@%@X", textField.text, string];  
            return NO;  
        }  
        // 如果是其他情况则直接返回小于等于18(最多输入18位)  
        return length <= 18;  
    }  
    return YES;  
}  
// 判断最后一个是不是X  
- (BOOL)theLastIsX:(NSString *)IDNumber {  
    NSMutableArray *IDArray = [NSMutableArray array];  
    for (int i = 0; i < 17; i++) {  
        NSRange range = NSMakeRange(i, 1);  
        NSString *subString = [IDNumber substringWithRange:range];  
        [IDArray addObject:subString];  
    }  
    NSArray *coefficientArray = [NSArray arrayWithObjects:@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2", nil nil];  
    int sum = 0;  
    for (int i = 0; i < 17; i++) {  
        int coefficient = [coefficientArray[i] intValue];  
        int ID = [IDArray[i] intValue];  
        sum += coefficient * ID;  
    }  
    if (sum % 11 == 2) return YES;  
    else return NO;  

该方法来自http://blog.csdn.net/l2i2j2/article/details/51542028   引用一下    

相关文章推荐

Status2 <s:textfield>中的时间格式化输出

struts2 中的默认的日期输出并不符合我们的中文日常习惯,如果不进行处理直接输出的话,它从后台传过来的是一个时间戳,显然不符合我们需求。...
  • Alyces
  • Alyces
  • 2015年04月02日 09:24
  • 2173

Cocos2d-lua示例(二)登陆界面之editbox替换TextField

登陆界面主要功能是输入框的使用,当然cocos2d-x的TextField的用户体验不好,坑多,所以就有了editbox来替换TextField,editbox主要是在每平台下会去调用每个输入框,一款...

struts2 <s:textfield> value属性默认值解决方案

需求是这样:当用户登陆后,我们提供他一个可以修改个人信息的功能。在文本框里,需要显示用户的原始信息。 用户登陆后把他的全部信息放在session里,这种做法很正常,有一点开发经验的程序员都会这样...

iOS-TextField知多少 (2)

iOS-TextField知多少

cocos2dx 3.2 解决输入框(TextField,TextFieldTTF) 中文乱码问题

cocos2dx 输入框中文乱码

Cocos2dx控件 Text和TextField

Text Text类是一个Widget子类,它实现了在触摸屏上显示文本;触摸一个文本时拦截事件和动作消息发送到目标对象时所设定的目标和行动函数都继承自Widget。该控件提供了函数来设置文本的显示宽...

Struts2标签库(8):<s:form/>,<s:textfield/>,<s:password/>,<s:radio/>,<s:checkbox/>

start.jsp : Insert title here 标签用法 struts.xml :

j2me学习笔记【8】——TextField的使用实例

下面的一个实例是TextField的使用实例,输入、提交并显示输入内容。 package mtk; import javax.microedition.lcdui.Command; impor...

struts2<s:textfield>value默认值的问题

Users user=(Users)session.getAttribute("userInfo"); %> value值里面要怎么写才能够拿到user里的username的值? 试...

1.UITextField 只能输入数字和点 2.textField回收键盘

代码才是硬道理!#import "ViewController.h"@interface ViewController () { BOOL isHaveDian; } @end@impleme...
  • Mr_dyc
  • Mr_dyc
  • 2016年09月11日 17:07
  • 246
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于textfield(2)
举报原因:
原因补充:

(最多只允许输入30个字)