防止用户在 Objective-C 中输入多个小数
Prevent Users from Entering Multiple Decimals In Objective-C
我正在制作一个唯一的数字输入应用程序(仍然),用户在其中按下一个按钮,我将一个值存储到一个字符串中以显示在标签中。
大部分情况下效果很好,除了我想不出如何防止用户在单个字符串中输入多于一位的小数。 .
我查看了这个 Stack overflow 问题,但试图修改我自己的代码导致了一大堆错误。有人有什么建议吗?
- (void)numberBtn:(UIButton *)sender {
if (self.sales.text.length < 10) {
if(self.sales.text.length != 0){
NSString *lastChar = [self.sales.text substringFromIndex:[self.sales.text length] - 1];
if([lastChar isEqualToString:@"."] && [sender.titleLabel.text isEqualToString:@"."] && [sender.titleLabel.text stringByAppendingString:@"."]){
return;
}
if ([lastChar isEqualToString:@""] && [sender.titleLabel.text isEqualToString:@""]){
self.numbers = @"0.";
}
if ([self.sales.text rangeOfString:@"."].length > 0) {
NSArray *array = [self.sales.text componentsSeparatedByString:@"."];
if (array.count == 2) {
NSString *decimal = array.lastObject;
if (decimal.length > 2) {
return;
}
}
}
}
self.numbers = [NSString stringWithFormat:@"%@%@",self.numbers,sender.titleLabel.text];
self.sales.text = self.numbers;
}
}
两步...
- 检查按钮是否为小数
.
- 如果是,查看当前标签文本是否已经包含一个
.
如果是,return。如果不是,请继续处理您的按钮输入:
- (void)numberBtn:(UIButton *)sender {
NSString *btnTitle = sender.currentTitle;
NSString *curText = self.sales.text;
if ([btnTitle isEqualToString:@"."]) {
if ([curText containsString:@"."]) {
NSLog(@"%@ : Already has a decimal point!", curText);
return;
}
}
// whatever else you want to do with the input...
}
我正在制作一个唯一的数字输入应用程序(仍然),用户在其中按下一个按钮,我将一个值存储到一个字符串中以显示在标签中。
大部分情况下效果很好,除了我想不出如何防止用户在单个字符串中输入多于一位的小数。 .
我查看了这个 Stack overflow 问题,但试图修改我自己的代码导致了一大堆错误。有人有什么建议吗?
- (void)numberBtn:(UIButton *)sender {
if (self.sales.text.length < 10) {
if(self.sales.text.length != 0){
NSString *lastChar = [self.sales.text substringFromIndex:[self.sales.text length] - 1];
if([lastChar isEqualToString:@"."] && [sender.titleLabel.text isEqualToString:@"."] && [sender.titleLabel.text stringByAppendingString:@"."]){
return;
}
if ([lastChar isEqualToString:@""] && [sender.titleLabel.text isEqualToString:@""]){
self.numbers = @"0.";
}
if ([self.sales.text rangeOfString:@"."].length > 0) {
NSArray *array = [self.sales.text componentsSeparatedByString:@"."];
if (array.count == 2) {
NSString *decimal = array.lastObject;
if (decimal.length > 2) {
return;
}
}
}
}
self.numbers = [NSString stringWithFormat:@"%@%@",self.numbers,sender.titleLabel.text];
self.sales.text = self.numbers;
}
}
两步...
- 检查按钮是否为小数
.
- 如果是,查看当前标签文本是否已经包含一个
.
如果是,return。如果不是,请继续处理您的按钮输入:
- (void)numberBtn:(UIButton *)sender {
NSString *btnTitle = sender.currentTitle;
NSString *curText = self.sales.text;
if ([btnTitle isEqualToString:@"."]) {
if ([curText containsString:@"."]) {
NSLog(@"%@ : Already has a decimal point!", curText);
return;
}
}
// whatever else you want to do with the input...
}