Iphone 十进制改进目标c计算器
我正在做iOS的计算器教程,我做了一些关于十进制风格的研究。到目前为止,在我的研究中,我已经阅读了下面的代码Iphone 十进制改进目标c计算器,iphone,objective-c,ios,nsstring,Iphone,Objective C,Ios,Nsstring,我正在做iOS的计算器教程,我做了一些关于十进制风格的研究。到目前为止,在我的研究中,我已经阅读了下面的代码 - (IBAction)digitPressed:(UIButton *)sender { NSString *digit = sender.currentTitle; NSString *decimal = @"."; BOOL decimalAlreadyEntered = [self.display.text rangeOfString:decimal].l
- (IBAction)digitPressed:(UIButton *)sender {
NSString *digit = sender.currentTitle;
NSString *decimal = @".";
BOOL decimalAlreadyEntered = [self.display.text rangeOfString:decimal].location == NSNotFound ? NO : YES;
if (self.userIsInTheMiddleOfEnteringANumber) {
if (([digit isEqual:decimal] && !decimalAlreadyEntered) || !([digit isEqual:decimal])) {
[self.display setText:[[self.display text] stringByAppendingString:digit]];
}
}
else if ([self.display.text isEqual:@"0"] && digit == decimal){
[self.display setText:[[self.display text] stringByAppendingString:digit]];
self.userIsInTheMiddleOfEnteringANumber = YES;
}
else {
[self.display setText:digit];
self.userIsInTheMiddleOfEnteringANumber = YES;
}
}
这段代码帮助我防止用户按下多个小数点,并将其限制为一个(如2.09所示)。凉的但是,在应用程序启动期间,当我按下小数点并按下数字(如1)时,标签将只显示(.1),而不是(0.1)。非常感谢对改进的任何帮助:)在-(BOOL)textField:(UITextField*)textField shouldChangeCharactersRange:(NSRange)range replacementString:(NSString*)string您可以检查第一个值是否为“”,然后用“0”替换文本值,无论用户输入了什么。并且仅当textField值为“”时才执行此检查“什么”
最重要的是,谢谢你,不过我的应用程序中没有使用文本字段。
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *symbol = [[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator];
if (range.location == 0 && [string isEqualToString:symbol]) {
// decimalseparator is first
textField.text = [NSString stringWithFormat:@"0%@",textField.text];
return YES;
}
}