我正在做一个简单的计算器,它会对用户在触摸按钮时输入的数字进行乘法运算。它的工作正常,但如果用户在按键完成之前按下按钮,计算器将无法工作,因为用户没有按下完成,因此没有存储任何值。因此,如果用户在按下按钮之前按下按钮,如何确保存储该值。
m文件的代码
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic,copy) NSString* number;
@property (nonatomic) double ans;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
self.number= self.enteredValue.text;
if (textField == self.enteredValue) {
[textField resignFirstResponder];
self.ans = [self.enteredValue.text doubleValue];
self.answer.text = [NSString stringWithFormat:@"%f",self.ans];
}
NSLog(@"%f",self.ans);
return YES;
}
- (IBAction)multiplierPressed:(UIButton *)sender {
self.answer.text = [NSString stringWithFormat:@"%f",self.ans*10];
}
@end
头文件
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
@property (weak, nonatomic) IBOutlet UITextField *enteredValue;
- (IBAction)multiplierPressed:(UIButton *)sender;
@property (weak, nonatomic) IBOutlet UILabel *answer;
@end
答案 0 :(得分:1)
您已经确定了问题的原因:只有在用户点按“完成”并使用该值时才会保存该值。你怎么解决这个问题?好吧,您可以在用户输入内容时随时保存值。加载视图控制器时,为文本更改事件添加新操作:
[textField addTarget:self
action:@selector(textFieldDidChange:)
forControlEvents:UIControlEventEditingChanged];
当文本字段中的文本发生变化时,这将使textFieldDidChange:方法被调用。
或者,您可以停止将值保存到您自己的实例变量中,并在用户点击x10按钮时使用当前在文本字段中的值。
- (IBAction)multiplierPressed:(UIButton *)sender {
float enteredValue = [self.textField.text floatValue];
self.answer.text = [NSString stringWithFormat:@"%f", enteredValue * 10];
}
在这种情况下,您必须在视图控制器中声明一个textField属性,并在Interface Builder中指定它。