RT,要弄个输入车牌后5位字符的输入框,车牌后5位只能有数字和字母,我在网上找了很多方法,都有些问题,要么就全都能输入,要么就只能输入数字,要么就到输入到5位后无法修改输入的东西,所以向大家求助,有没有什么方法可以限定输入框不能输入中文的
我现在用的这个方法
//设置键盘类型
self.textField.keyboardType = UIKeyboardTypeASCIICapable;
//判断是否是数字,不是的话就输入失败
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *cs;
cs = [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串
BOOL canChange = [string isEqualToString:filtered];
return self.textField.text.length>=5?NO: canChange;
}
这个方法输入满5位后就无法删除修改了求教
ringa_lee2017-04-17 14:33:10
要判斷存在的內容加上要輸入的內容是否>=5才可以
加上後面的程式碼可以運行了
NSUInteger newLength = textField.text.length+string .length-range.length;
return newLength>=5?NO : canChange;
大家讲道理2017-04-17 14:33:10
可以用巨集定義一個可輸入的字元集串,例如:
#define kValidChar @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″
然後,再相關委託中判斷輸入的字元是否能在這個字串中找到。找不到,不接受。
迷茫2017-04-17 14:33:10
輸入到5位後不能修改或刪除是你自己程式碼的問題。大於等於5就不讓修改了,自然就不行了。你需要檢查的是replacement是否符合規範,和修改後的結果是否符合規範。刪除的時候,replacement字元是空。
objectivec
return self.textField.text.length>=5?NO: canChange;