IOS 键盘 禁止输入字母

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS 键盘 禁止输入字母相关的知识,希望对你有一定的参考价值。

在开发中有时候需要数字键盘,但是设置textfield为默认数字键后,

在模拟器上如果用电脑键盘仍然可以输入字母,

在真机上如果使用搜狗等其他输入法也可能会出现可以输入字母的情况。解决方法如下,在textfield的代理方法中实现

 1 #pragma mark - UITextFieldDelegate
 2 - (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
 3     //禁止用户输入字母
 4     NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
 5     for (int i = 0; i < [string length]; i++) {
 6         unichar c = [string characterAtIndex:i];
 7         if (![myCharSet characterIsMember:c]) {
 8             return NO;
 9         }
10     }
11     
12     //处理第一个数字为小数点或者0的情况
13     NSString *text = theTextField.text;
14     NSString *passcode = [text stringByReplacingCharactersInRange:range withString:string];
15     if ([passcode hasPrefix:@"."])
16     {
17         return NO;
18     }
19     
20     
21     //处理小数点两位后的情况
22     if (!([theTextField.text rangeOfString:@"."].location == NSNotFound)) {
23         NSArray *comArray = nil;
24         comArray = [passcode componentsSeparatedByString:@"."];
25         if (([comArray count] > 1) && ([comArray[1] length] > 2))
26         {
27             return NO;
28         }
29         
30     }
31     
32     //处理两个以上小数点的情况
33     if ([string isEqualToString:@"."])
34     {
35         //        if ([text containsString:@"."])
36         if(!([text rangeOfString:@"."].location == NSNotFound))
37         {
38             return NO;
39         }
40     }
41     
42     return YES;
43 }

 

以上是关于IOS 键盘 禁止输入字母的主要内容,如果未能解决你的问题,请参考以下文章

iOS 禁止输入空格emoji表情

有没有办法禁止键盘移动LinearLayout?

IOS开发-OC学习-常用功能代码片段整理

iOS - 更改为不同的 TextField 时保持 TextField 状态的输入键盘

软输入键盘隐藏编辑文本

使用html的input标签时如何控制ios键盘