2

私はまだコンバーター アプリに取り組んでいますが、またしても問題に遭遇しました。

テキストフィールドですべての編集を行って計算コードをトリガーしようとしている間、何も起こりません。これはatmで起こることです:

数字を入力しようとしている

PickerWheel で何かを変更するまで、計算はトリガーされません。それが私が最初に作成した方法であるため、コードのせいではありません。

これを修正しようとしているときに、友人から助けを得て、次のコードを追加して機能させました。

初め、

- (void)textFieldChanged:(UITextField *)textField
{
[self updateConversionLabel];
}

.m の冒頭、および .h の次の部分 (私はその 2 つを知っていますが、おそらく間違っていますが、両方を試してみたかったのです。)

-(IBAction)textFieldChanged:(UITextField *)textField;
-(void)textFieldChanged:(UITextField *)textField;

計算は次のとおりです。

#pragma mark -
#pragma mark PickerView Delegate

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
[self updateConversionLabel];
}

- (void)updateConversionLabel
{
float convertFrom = [[_convertRates objectAtIndex:[picker selectedRowInComponent:0]] floatValue];

float convertTo = [[_convertRates objectAtIndex:[picker selectedRowInComponent:1]] floatValue];

float input = [inputText.text floatValue];
float to = convertTo;
float from = convertFrom;

float convertValue = input;
float relative = to / from;
float result = relative * convertValue;

NSString *convertFromName = [_convertFrom objectAtIndex:[picker selectedRowInComponent:0]];
NSString *convertToName = [_convertFrom objectAtIndex:[picker selectedRowInComponent:1]];



NSString *resultString = [[NSString alloc]initWithFormat:
                          @" %.4f %@",result, convertToName];
resultLabel.text = resultString;

NSString *formelString = [[NSString alloc]initWithFormat:
                          @" %.4f %@=", convertValue, convertFromName];
formelLabel.text = formelString;


}

エラーはインターフェースビルダーにある可能性があると考えたので、ここに接続があります 接続インスペクター

これに対する簡単な解決策はありますか?:)

4

3 に答える 3

3

アクション「値が変更されました」を使用する代わりに、テキスト フィールドに対して「編集が変更されました」を使用します。

于 2012-10-22T18:52:12.347 に答える
1

ビュー コントローラーが UITextFieldDelegate に準拠していることを確認してください。インターフェイス ビルダーで、ViewController を UITextField のデリゲートとして設定します。次に、このデリゲート メソッドを viewController に実装します。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;  

そのデリゲート メソッドは、テキスト フィールドに変更を加えるたびに起動されるため、そこで計算をトリガーします。

于 2012-10-22T17:05:01.293 に答える
0

textFieldChanged アクションを「Editing Changed」に変更し、すべての計算コードを textFieldChanged アクション メソッドに入れます。

于 2012-10-22T19:03:02.267 に答える