2

我仍在开发我的转换器应用程序,我再次偶然发现了一个问题。

在尝试在文本字段中进行所有编辑以触发计算代码时,没有发生任何事情。这就是atm发生的事情:

试图输入数字

在我更改 PickerWheel 中的某些内容之前,不会触发计算。我没有责怪代码,因为这就是我第一次制作它的方式。

在尝试解决此问题时,我从好友那里得到了一些帮助,并添加了以下代码以使其正常工作。

第一的,

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

在 .m 的开头,以及 .h 的以下内容(我知道它的两个,那可能是错误的,但我想尝试两者。)

-(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 回答