在开发中有时候需要数字键盘,但是设置textfield为默认数字键后,
在模拟器上如果用电脑键盘仍然可以输入字母,
在真机上如果使用搜狗等其他输入法也可能会出现可以输入字母的情况。解决方法如下,在textfield的代理方法中实现
1
#pragma mark - UITextFieldDelegate
2 - (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
3//禁止用户输入字母 4 NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
5for (int i = 0; i < [string length]; i++) {
6 unichar c = [string characterAtIndex:i];
7if (![myCharSet characterIsMember:c]) {
8return NO;
9 }
10 }
1112//处理第一个数字为小数点或者0的情况13 NSString *text = theTextField.text;
14 NSString *passcode = [text stringByReplacingCharactersInRange:range withString:string];
15if ([passcode hasPrefix:@"."])
16 {
17return NO;
18 }
192021//处理小数点两位后的情况22if (!([theTextField.text rangeOfString:@"."].location == NSNotFound)) {
23 NSArray *comArray = nil;
24 comArray = [passcode componentsSeparatedByString:@"."];
25if (([comArray count] > 1) && ([comArray[1] length] > 2))
26 {
27return NO;
28 }
2930 }
3132//处理两个以上小数点的情况33if ([string isEqualToString:@"."])
34 {
35// if ([text containsString:@"."])36if(!([text rangeOfString:@"."].location == NSNotFound))
37 {
38return NO;
39 }
40 }
4142return YES;
43 }
原文:http://www.cnblogs.com/zhhl/p/5191818.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!