Rap*_*nto 16 iphone casting objective-c
我的IB中有一个UITextField,我想查看用户是否只输入了数字(没有字符)并得到整数值.
我得到了UITextField的整数值:
int integer = [myUITexrtField.text intValue];
Run Code Online (Sandbox Code Playgroud)
当我放一个字符(,;.)时它返回0并且我不知道如何检测它不仅仅是数字.
我能怎么做?
asl*_*nci 49
如下所示实现shouldChangeCharactersInRange方法不允许用户输入非数字字符.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0) || [string isEqualToString:@""];
}
Run Code Online (Sandbox Code Playgroud)
如果字符串是数字,则返回YES,否则返回NO.[string isEqualToString @""]是支持要删除的退格键.
我喜欢这种方法,因为它很干净.
小智 17
务必设置文本字段委托
使用以下功能确保用户只能输入数字:
- (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;
}
}
Run Code Online (Sandbox Code Playgroud)
试试这个:它将阻止用户输入除数字之外的任何字符
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
if ([string rangeOfCharacterFromSet:nonNumberSet].location != NSNotFound)
{
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
http://rosettacode.org/wiki/Determine_if_a_string_is_numeric#Objective-C
或者您可以确保当焦点位于字段上时仅出现数字键盘
归档时间: |
|
查看次数: |
35340 次 |
最近记录: |