标签:
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController
{
NSInteger _firstName;
NSInteger _calculator; // 数字的计数器
NSInteger _buttonType; // 计算符号计数器
}
@property (nonatomic, retain) UITextField *inputField;
@end
#import "MyViewController.h"
@interface MyViewController ()
@end
@implementation MyViewController
-(void)dealloc
{
[_inputField release];
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//计算器的1 - 10个数字键
CGRect rect = CGRectMake(40, 0, 50, 30);
for (int i = 0; i < 10; i++) {
rect.origin.y += 50;
NSString *s = [NSString stringWithFormat:@"%d", i];
UIButton *numButton = [UIButton buttonWithType:UIButtonTypeCustom];
[numButton setFrame:rect];
[numButton setBackgroundColor:[UIColor cyanColor]];
[numButton setTitle:s forState:UIControlStateNormal];
[self.view addSubview:numButton];
[numButton addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
}
CGRect textRect = CGRectMake(130, 50, 80, 30);
_inputField = [[UITextField alloc] initWithFrame:textRect];
[_inputField setKeyboardType:UIKeyboardTypeNamePhonePad];
[_inputField setBackgroundColor:[UIColor grayColor]];
[self.view addSubview:_inputField];
[_inputField release];
textRect.size.width = 50;
textRect.origin.y += 50;
UIButton *addButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[addButton setFrame:textRect];
[addButton setBackgroundColor:[UIColor brownColor]];
[addButton setTitle:@"=" forState:UIControlStateNormal];
[self.view addSubview:addButton];
[addButton addTarget:self action:@selector(buttonEqual:) forControlEvents:UIControlEventTouchUpInside];
for (int j = 0; j < 4; j++) {
NSArray *symbolArray = [NSArray arrayWithObjects:@"+", @"-", @"*", @"/", nil];
NSString *symbolString = [symbolArray objectAtIndex:j];
textRect.origin.y += 50;
UIButton *symbolButton = [UIButton buttonWithType:UIButtonTypeCustom];
[symbolButton setFrame:textRect];
[symbolButton setBackgroundColor:[UIColor greenColor]];
[symbolButton setTitle:symbolString forState:UIControlStateNormal];
[self.view addSubview:symbolButton];
[symbolButton setTag:j];
[symbolButton addTarget:self action:@selector(calculateSymbolButton:) forControlEvents:UIControlEventTouchUpInside];
}
textRect.origin.y += 50;
UIButton *clearButton = [UIButton buttonWithType:UIButtonTypeCustom];
[clearButton setBackgroundColor:[UIColor purpleColor]];
[clearButton setTitle:@"C" forState:UIControlStateNormal];
[clearButton setFrame:textRect];
[self.view addSubview:clearButton];
[clearButton addTarget:self action:@selector(clearButton:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)buttonClick:(UIButton *)sender
{
NSString *inputString = nil;
if (0 == _calculator) {
inputString = [_inputField.text stringByAppendingString:sender.titleLabel.text];
}else{
inputString = sender.titleLabel.text;
}
_calculator = 0;
[_inputField setText:inputString];
}
- (void)calculateSymbolButton:(UIButton *)sender
{
//此处还有一点小瑕疵,需要在判断一下
[self buttonEqual:nil];
_firstName = [_inputField.text integerValue];
// 保存输入的下一个数的形式
_calculator = 1;
// 保存计算类型 + - / *(用tag更简单一点)
_buttonType = sender.tag;
}
- (void)clearButton:(UIButton *)sender
{
_firstName = 0;
_calculator = 0;
_buttonType = 0;
_inputField.text = @"";
}
- (void)buttonEqual:(UIButton *)sender
{
NSInteger result;
switch (_buttonType) {
case 0:
result = _firstName + [_inputField.text integerValue];
break;
case 1:
result = _firstName - [_inputField.text integerValue];
break;
case 2:
result = _firstName * [_inputField.text integerValue];
break;
case 3:
result = _firstName / [_inputField.text integerValue];
break;
default:
break;
}
NSString *end = [NSString stringWithFormat:@"%ld", result];
_inputField.text = end;
}
标签:
原文地址:http://blog.csdn.net/anders_wangw/article/details/44236547