我的IB中有一个UITextField,我想检查用户是否只输入了数字(没有字符)并获得整数值。
我像这样得到UITextField的整数值:
int integer = [myUITexrtField.text intValue];
当我把一个字符(,;.)它返回0,而我不知道如何检测它不仅仅是数字。
我该怎么做呢?
发布于 2010-04-27 16:30:07
http://rosettacode.org/wiki/Determine_if_a_string_is_numeric#Objective-C
或者,您可以确保当焦点出现在字段上时,只显示数字键盘
发布于 2011-06-12 21:11:24
如下所示实现shouldChangeCharactersInRange方法不允许用户输入非数字字符。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0) || [string isEqualToString:@""];
}
如果字符串是数字,则返回YES,否则返回NO。字符串isEqualToString@"“支持退格键删除。
我喜欢这种方法,因为它很干净。
发布于 2010-04-28 15:55:21
请确保设置文本字段委托
使用以下函数确保用户只能键入数字:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber* candidateNumber;
NSString* candidateString = [textField.text stringByReplacingCharactersInRange:range withString:string];
range = NSMakeRange(0, [candidateString length]);
[numberFormatter getObjectValue:&candidateNumber forString:candidateString range:&range error:nil];
if (([candidateString length] > 0) && (candidateNumber == nil || range.length < [candidateString length])) {
return NO;
}
else
{
return YES;
}
}
https://stackoverflow.com/questions/2719680
复制相似问题