我需要确保用户只在我的文本字段中输入数字。我将键盘设置为数字,但如果用户使用外部键盘,则可能会输入一个字母。如何检测textfield.text
中的任何字符是否为字符而不是数字?
谢谢!
答案 0 :(得分:4)
您可以选择输入textField的字符
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
/* this ensures that ONLY numbers can be entered, no matter what kind of keyboard is used */
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
for (int i = 0; i < [string length]; i++) {
unichar c = [string characterAtIndex:i];
if (![myCharSet characterIsMember:c]) {
return NO;
}
}
/* this allows you to choose how many characters can be used in the textField */
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 7) ? NO : YES;
}
答案 1 :(得分:1)
每当用户输入密钥时,将调用此文本字段委托。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
在此内部检查文本是否包含字符。如果它是你的行动。比如提示警报或其他什么。
答案 2 :(得分:1)
在文本字段的委托中实现textField:shouldChangeCharactersInRange:replacementString:
,如果传递的字符串包含无效字符,则返回NO
。