最近、電卓アプリを作成しましたが、問題を理解できました。ポイントについて注意したいもう1つのことは、計算に複数のポイントを含めたくないということです(例:10.345.1123.5)。簡単に言えば、それを正当な浮動小数点数にする必要があります。
そうは言っても、IBActionを使用できます(ストーリーボードまたはxibファイルにリンクすることを忘れないでください)
-(IBAction)decimalPressed:(UIButton *)sender
{
NSRange range = [self.display.text rangeOfString:@"."];
if (range.location ==NSNotFound){
self.display.text = [ self.display.text stringByAppendingString:@"."];
}
self.userIsInTheMiddleOfEnteringANumber = YES;
}
同じプロジェクトで実行している可能性はありますが、まったく異なる可能性もあるため(自分でゼロから開始する場合)、いくつかのコードを確認します。
UIButtonをデフォルトのIDに置き換えることもできますが、自分自身またはコードを表示する他の人に明確に説明するために、静的に置き換えることをお勧めします。
名前が示すようにNSRangeは範囲をマークし、範囲は計算の表示テキスト(1235.3568など)になります。この場合、対象となる文字列の範囲は「。」です。したがって、NSNotfound(rangeOfString "。"がテキスト範囲に見つからない)の場合、現在の表示テキストに"。"を追加します。関数stringByAppendingString:@ "。"を使用すると、他に存在しないため、"。"の場合は関数は実行されません。はすでに検出されており、ディスプレイ上の複数のポイントの問題を解決します。
userIsInTheMiddleOfEnteringANumberは、表示に0が表示される問題(06357など)を解決するためのBOOLです。変更するメソッドがある場合は、メソッド名を独自のメソッド名に置き換えてください。