標籤:
在開發中有時候需要數字鍵台,但是設定textfield為預設數字鍵後,
在模擬器上如果用電腦鍵盤仍然可以輸入字母,
在真機上如果使用搜狗等其他IME也可能會出現可以輸入字母的情況。解決方案如下,在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 鍵盤 禁止輸入字母