0

ユーザーが誤って数字を入力した場合に備えて、バックスペース ボタンを持つ電卓アプリを作成しています。UILabel に送信された最後のものを削除する方法はありますか?

確かに、現在行っていることを示すためにコードを追加しています。

- (IBAction)digitPressed:(UIButton *)sender {

    NSString *digit = sender.currentTitle;
    if ([digit isEqualToString:@"."] && !_decimalPressed){
        self.display.text = [self.display.text stringByAppendingString:digit];
        self.historyDisplay.text = [self.display.text stringByAppendingString:digit];
        self.decimalPressed = YES;
    }
    else if (!_isUserInTheMiddleOfEnteringANumber){
        self.display.text = digit;
        self.historyDisplay.text = digit;
        self.isUserInTheMiddleOfEnteringANumber = YES;
    }
    else if (![digit isEqualToString:@"."]){
        self.display.text = [self.display.text stringByAppendingString:digit];
        self.historyDisplay.text = [self.display.text stringByAppendingString:digit];
    }
}

これは、最後の要素を削除しようとしている方法です

- (IBAction)backSpace:(id)sender {



}
4

3 に答える 3

1

ラベル内に設定された文字列から最後の文字を削除するだけです。コード例:

int numChars = myLabel.text.length;
NSString* truncatedString = [myLabel.text substringToIndex:(numChars - 1)];
mLabel.text = truncatedString;
于 2012-07-02T02:32:39.617 に答える
0
- (IBAction)backPressed:(id)sender {
    self.display.text=[self.display.text substringToIndex:[self.display.text length] -1];
    if ([self.display.text isEqualToString:@""] || [self.display.text isEqualToString:@"-"]){
        self.display.text = @"0";
        self.userIsInTheMiddleOfEnteringANumber=NO;
    }

}

コードにいくつかの一般的なロジックを追加しました。最後の数字に到達して再びスペースを戻すと、表示テキストを 0 として返します。電卓なので、マイナス記号 ( +/- ) を作成したと仮定して、 が残っている場合は-削除します。 0 も配置します。したがって、すべてを放棄して 0 に戻す場合は、自分userIsInTheMiddleOfEnteringANumberも NO に設定する必要があります。

于 2012-07-09T08:18:30.183 に答える
0
NSMutableString * stringToModify = [[NSMutableString alloc] initWithString: self.display.text];
if(stringToModify && ([stringToModify length] > 0))
{
    [stringToModify deleteCharactersInRange: NSMakeRange([stringToModify length] - 1, 1)];
    self.display.text = stringToModify;
    [stringToModify release]; // if and only if NOT using ARC
}
于 2012-07-02T02:32:39.513 に答える