我最近开始在iTunes U上关注斯坦福大学的iPhone开发在线课程。
我正在尝试为前几个讲座做家庭作业。我跟着我构建了一个基本计算器的演练,但现在我正在尝试第一个任务,我似乎无法解决它。这是一个:
实施“退格”按钮,供用户按下错误的数字按钮时按下。这不是“撤消”,所以如果他们打了 错误的操作按钮,他们运气不好!这取决于你 决定如何处理他们退出整个区域的情况 数字他们正在进入,但有显示去 完全空白可能不是非常用户友好。
我遵循了这个:Creating backspace on iOS calculator
所以代码是
-(IBAction)backspacePressed:(UIButton *)sender {
NSMutableString *string = (NSMutableString*)[display text];
int length = [string length];
NSString *temp = [string substringToIndex:length-1];
[display setText:[NSString stringWithFormat:@"%@",temp]];
}
我的问题是我不应该检查我的最后一个是数字还是操作数?如果是操作数,没有执行,如果是数字,则删除它......
答案 0 :(得分:1)
首先,该代码中有几个不必要的步骤......为了回答你的问题,是的,你应该检查一个操作数。以下是我用支票编写该方法的方法:
NSString *text = [display text];
int length = [text length];
unichar c = [text characterAtIndex:length];
NSCharacterSet *digits = [NSCharacterSet decimalCharacterSet];
if ([digits characterIsMember:c] || c == '.') {
NSString *temp = [[display text] substringToIndex:length-1];
[display setText:temp];
}
答案 1 :(得分:1)
我也将参加2011年秋季的iTunes U课程。
walk through为我们提供了一个实例变量userIsInTheMiddleOfEnteringANumber,所以我只是检查是否为YES。
- (IBAction)backspacePressed {
if (self.userIsInTheMiddleOfEnteringANumber) {
if ([self.display.text length] > 1) {
self.display.text = [self.display.text substringToIndex:[self.display.text length] - 1];
} else {
self.display.text = @"0";
self.userIsInTheMiddleOfEnteringANumber = NO;
}
}
}
答案 2 :(得分:1)
我使用了Joe_Schmoe采用的方法,这很简单。 (只需删除显示中的字符,直到结束)。
如果用户继续按“清除错误”,我也会从堆栈中删除一个项目。
答案 3 :(得分:1)
我自己刚刚开始上课,这篇文章现在已经很老了,但我的解决方案可能对其他人有所帮助,如果没有其他的话可以提供思考:
- (IBAction)deletePressed:(id)sender
{
NSString *displayText = [display text];
int length = [displayText length];
if (length != 1) {
NSString *newDisplayText = [displayText substringToIndex:length-1];
[display setText:[NSString stringWithFormat:@"%@",newDisplayText]];
} else {
userIsInTheMiddleOfEnteringANumber = NO;
NSString *newDisplayText = @"0";
[display setText:[NSString stringWithFormat:@"%@",newDisplayText]];
}
}