CalculatorViewController.m 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607
  1. #import "CalculatorViewController.h"
  2. #import <Masonry.h>
  3. #import "connectDeviceManager.h"
  4. #import "RSATool.h"
  5. #import "customToastVew.h"
  6. @interface CalculatorViewController ()
  7. {
  8. UIView *bgView;/*引导视图*/
  9. }
  10. @property(nonatomic,copy)NSMutableString *curKeyToForgetPwd;//特殊符号进入忘记密码
  11. @end
  12. @implementation CalculatorViewController
  13. @synthesize pwd;
  14. #define BUTTON
  15. - (void)viewDidLoad {
  16. [super viewDidLoad];
  17. // Do any additional setup after loading the view, typically from a nib.
  18. self.view.backgroundColor=[UIColor blackColor];
  19. CGFloat mWidth=self.view.frame.size.width;
  20. CGFloat mHieght=self.view.frame.size.height;
  21. if(mWidth > mHieght){
  22. mWidth = self.view.frame.size.height;
  23. mHieght = self.view.frame.size.width;
  24. }
  25. //加载button
  26. [self loadButtons:mWidth Hight:mHieght];
  27. //加载textField
  28. [self loadTextField:mWidth Hight:mHieght];
  29. //初始化Calculator
  30. _cl=[[Calculator alloc]init];
  31. /*加载引导视图*/
  32. BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_Mask_View_Open_Calcuator_Tips];
  33. if (haveOpenMask == NO){
  34. [self addGuideView];
  35. }
  36. [[netWorkManager shareInstance] RefreshThridMsg];
  37. _curKeyToForgetPwd = [NSMutableString new];
  38. }
  39. - (void)addGuideView{
  40. bgView = [[UIView alloc] init];
  41. [bgView setBackgroundColor:HW000000Color60];
  42. [self.view addSubview:bgView];
  43. [bgView mas_makeConstraints:^(MASConstraintMaker *make) {
  44. make.left.mas_equalTo(0);
  45. make.bottom.mas_equalTo(0);
  46. make.right.mas_equalTo(0);
  47. make.top.mas_equalTo(0);
  48. }];
  49. /*箭头视图*/
  50. UIImageView *flagImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"guide_open_calcu_flag1"]];
  51. [bgView addSubview:flagImageView];
  52. [flagImageView mas_makeConstraints:^(MASConstraintMaker *make) {
  53. make.right.mas_equalTo(-118.f);
  54. make.height.mas_equalTo(67);
  55. make.width.mas_equalTo(22);
  56. make.top.equalTo(_TF.mas_centerY).offset(40);
  57. }];
  58. /*不可点击btn*/
  59. UIButton *unableBtn = [[UIButton alloc] init];
  60. unableBtn.frame = CGRectMake(0, 0, 295, 64);
  61. NSString * curStr = NSLocalizedString(@"guide_set_open_calcula_guide_tips",nil);
  62. CGFloat curHeight = [curStr boundingRectWithSize:CGSizeMake(295 - 20 , 1000) options:(NSStringDrawingUsesLineFragmentOrigin) attributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:14.f]} context:nil].size.height;
  63. if(curHeight < 50){
  64. curHeight = 50;
  65. }
  66. else{
  67. curHeight += 20;
  68. }
  69. // gradient
  70. CAGradientLayer *gl = [CAGradientLayer layer];
  71. gl.frame = CGRectMake(0,0,295,curHeight);
  72. gl.startPoint = CGPointMake(0, 0.5);
  73. gl.endPoint = CGPointMake(1, 0.5);
  74. gl.colors = @[(__bridge id)HW0CDEFDColor.CGColor, (__bridge id)HW058DFBColor.CGColor];
  75. gl.locations = @[@(0), @(1.0f)];
  76. [unableBtn.layer addSublayer:gl];
  77. [unableBtn setUserInteractionEnabled:NO];
  78. [unableBtn setTitle:curStr forState:(UIControlStateNormal)];
  79. [unableBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
  80. [unableBtn.titleLabel setFont:[UIFont systemFontOfSize:14.f]];
  81. [unableBtn.titleLabel setNumberOfLines:0];
  82. [unableBtn.layer setCornerRadius:curHeight/2.0];
  83. unableBtn.clipsToBounds = YES;
  84. [bgView addSubview:unableBtn];
  85. [unableBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  86. make.right.mas_equalTo(-20*AUTOSCALE);
  87. make.width.mas_equalTo(295);
  88. make.top.equalTo(flagImageView.mas_bottom).offset(-8);
  89. make.height.mas_equalTo(curHeight);
  90. }];
  91. unableBtn.contentEdgeInsets = UIEdgeInsetsMake(0,10, 0, 10);
  92. UIButton *knowBtn = [[UIButton alloc] init];
  93. [knowBtn setBackgroundColor:[UIColor clearColor]];
  94. [knowBtn.layer setCornerRadius:18.f];
  95. [knowBtn.layer setBorderColor:HWFFFFFFColor.CGColor];
  96. [knowBtn.layer setBorderWidth:1];
  97. [knowBtn setTitle:NSLocalizedString(@"guide_set_pwd_guide_know",nil) forState:(UIControlStateNormal)];
  98. [knowBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
  99. [knowBtn.titleLabel setFont:[UIFont systemFontOfSize:16]];
  100. [bgView addSubview:knowBtn];
  101. [knowBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  102. make.right.mas_equalTo(-29*AUTOSCALE);
  103. make.width.mas_equalTo(120);
  104. make.top.equalTo(unableBtn.mas_bottom).offset(15);
  105. make.height.mas_equalTo(36.f);
  106. }];
  107. [knowBtn addTarget:self
  108. action:@selector(knowBtnPressed)
  109. forControlEvents:(UIControlEventTouchUpInside)];
  110. }
  111. - (void)knowBtnPressed{
  112. [bgView removeFromSuperview];
  113. [HWDataManager setBoolWithKey:Const_Mask_View_Open_Calcuator_Tips value:YES];
  114. }
  115. #pragma mark ----样式设置----
  116. -(void)loadButtons:(CGFloat)mWidth Hight:(CGFloat)mHieght{
  117. CGFloat x=1;
  118. CGFloat y=mHieght-(((mWidth-5)/4)*5)-1 - 60;
  119. if(mHieght == 736 || mHieght == 667){//修改 8P手机UI问题
  120. y += 40;
  121. }
  122. NSArray *buttonArray=@[@"C",@"+/-",@"%",@"÷",@"7",@"8",@"9",@"×",@"4",@"5",@"6",@"—",@"1",@"2",@"3",@"+",@"0",@".",@"="];
  123. NSInteger buttonArrayID=0;
  124. for (int i=0; i<5; i++) {
  125. for (int j=0; j<(i==4?3:4); j++) {
  126. UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
  127. button.frame=CGRectMake(x, y, (buttonArrayID==16?(mWidth-5)/4*2+1 - 13:(mWidth-5)/4 - 13), (mWidth-5)/4 - 13);
  128. button.layer.cornerRadius = ((mWidth-5)/4 - 13)/2;
  129. [button setTitle:[buttonArray objectAtIndex:buttonArrayID] forState:UIControlStateNormal];
  130. button.titleLabel.font=[UIFont systemFontOfSize:40];
  131. button.tag=100+buttonArrayID;
  132. [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  133. if (buttonArrayID%4==3||buttonArrayID==[buttonArray count]-1) {
  134. button.backgroundColor=HWEFA23BColor;
  135. }else if(buttonArrayID==16){
  136. //设置 0 Button 文字向右对齐
  137. [button setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0, (mWidth-5)/4)];
  138. x+=((mWidth-5)/4)+1;
  139. button.backgroundColor=HW333333Color9;
  140. }else if(buttonArrayID<3){
  141. button.backgroundColor=HWA5A5A5Color;
  142. [button setTitleColor: [UIColor blackColor] forState:UIControlStateNormal] ;
  143. }else{
  144. button.backgroundColor=HW333333Color9;
  145. }
  146. [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
  147. [self.view addSubview:button];
  148. x+=((mWidth-5)/4)+1;
  149. buttonArrayID++;
  150. }
  151. x=1;
  152. y+=((mWidth-5)/4)+1;
  153. }
  154. }
  155. -(void)loadTextField:(CGFloat)mWidth Hight:(CGFloat)mHieght{
  156. CGFloat adjust_X = 20.0;
  157. _TF=[[UITextField alloc]initWithFrame:CGRectMake(10, 50, mWidth-20- adjust_X, mHieght-(((mWidth-5)/4)*5)-50)];
  158. _TF.tag=1000;
  159. _TF.textColor=[UIColor whiteColor];
  160. [_TF setEnabled:NO];
  161. _TF.textAlignment=NSTextAlignmentRight;
  162. _TF.adjustsFontSizeToFitWidth=YES;//自适应宽度
  163. _TF.text=@"0";
  164. _TF.font=[UIFont fontWithName:@"HelveticaNeue-Thin" size:80];
  165. [self.view addSubview:_TF];
  166. }
  167. #pragma mark ----button响应----
  168. //button响应方法
  169. -(void)buttonAction:(UIButton *)sender{
  170. [self removeTextFieldFormat];
  171. switch (sender.tag) {
  172. case 100:
  173. //清除
  174. if ([sender.titleLabel.text isEqualToString:@"AC"]) {
  175. [self buttonSymbolStyleReduction:sender];
  176. }
  177. self.TF.text=@"0";
  178. [sender setTitle:@"AC" forState:UIControlStateNormal];
  179. [self.cl calculatorEmpty];
  180. _curKeyToForgetPwd = [NSMutableString new];
  181. break;
  182. case 101:
  183. //正负转换
  184. [self getPlusMinus:self.TF.text];
  185. _curKeyToForgetPwd = [NSMutableString new];
  186. break;
  187. case 102:
  188. //百分比
  189. [self getPercentage:self.TF.text];
  190. break;
  191. case 103:
  192. //除
  193. [self execute];
  194. self.cl.exType=1;
  195. [self buttonSymbolStyleReduction:sender];
  196. [self buttonSymbolStyle:sender];
  197. _curKeyToForgetPwd = [NSMutableString new];
  198. break;
  199. case 107:
  200. //乘
  201. [self execute];
  202. self.cl.exType=2;
  203. [self buttonSymbolStyleReduction:sender];
  204. [self buttonSymbolStyle:sender];
  205. _curKeyToForgetPwd = [NSMutableString new];
  206. break;
  207. case 111:
  208. //减
  209. [self execute];
  210. self.cl.exType=3;
  211. [self buttonSymbolStyleReduction:sender];
  212. [self buttonSymbolStyle:sender];
  213. _curKeyToForgetPwd = [NSMutableString new];
  214. break;
  215. case 115:
  216. //加
  217. [self execute];
  218. self.cl.exType=4;
  219. [self buttonSymbolStyleReduction:sender];
  220. [self buttonSymbolStyle:sender];
  221. _curKeyToForgetPwd = [NSMutableString new];
  222. break;
  223. case 117:
  224. //小数点
  225. [self decimalPoint:self.TF Button:sender];
  226. _curKeyToForgetPwd = [NSMutableString new];
  227. break;
  228. case 118:
  229. //等
  230. [self didClickEqualbuttonFun];
  231. [self execute];
  232. self.cl.exType=0;
  233. [self buttonSymbolStyleReduction:sender];
  234. // self.TF.text=@"0";
  235. break;
  236. default:
  237. //判断清空计数
  238. if (self.emptyCount!=0) {
  239. self.TF.text=@"";
  240. self.emptyCount=0;
  241. }
  242. [self buttonSymbolStyleReduction:sender];
  243. [(UIButton *)[self.view viewWithTag:100] setTitle:@"C" forState:UIControlStateNormal];
  244. [self textFieldValueChange:self.TF Button:sender];
  245. _curKeyToForgetPwd = [NSMutableString new];
  246. break;
  247. }
  248. [self addTextFieldFormat];
  249. HLog(@"输入密码:%@",_curKeyToForgetPwd);
  250. }
  251. #pragma mark ----样式处理----
  252. //添加点击运算符号button样式方法
  253. -(void)buttonSymbolStyle:(UIButton *)sender{
  254. [sender.layer setBorderWidth:2];
  255. }
  256. //还原运算符号button样式方法
  257. -(void)buttonSymbolStyleReduction:(UIButton *)sender{
  258. [((UIButton *)[self.view viewWithTag:103]).layer setBorderWidth:0] ;
  259. [((UIButton *)[self.view viewWithTag:107]).layer setBorderWidth:0] ;
  260. [((UIButton *)[self.view viewWithTag:111]).layer setBorderWidth:0] ;
  261. [((UIButton *)[self.view viewWithTag:115]).layer setBorderWidth:0] ;
  262. [sender.layer setBorderWidth:0];
  263. }
  264. //添加textfield格式
  265. -(void)addTextFieldFormat{
  266. NSMutableString *mutableStr=[NSMutableString stringWithString:self.TF.text];
  267. NSInteger mutableStrLength=mutableStr.length;
  268. //判断是否包含小数点 如果包含获取小数点左边的数字个数mutableStrLength
  269. if ([mutableStr containsString:@"."]) {
  270. mutableStrLength=[self getPointLeft:mutableStr];
  271. }else{
  272. mutableStrLength=[self getNumberCount:mutableStr];
  273. }
  274. for(int i=3 ; i<mutableStrLength ; i++ ){
  275. //每三个数字添加一次分隔符
  276. if (i%3==0) {
  277. //添加分隔逗号
  278. if (mutableStrLength>i) {
  279. NSInteger index=mutableStr.length-i-(mutableStr.length-mutableStrLength);
  280. NSRange range=NSMakeRange(index-1, 1);
  281. //如果上一个不是负号则添加分隔逗号
  282. if (![[mutableStr substringWithRange:range]isEqualToString:@"-"]) {
  283. //如果第一个是负号 分隔符位置+1
  284. if ([[mutableStr substringWithRange:NSMakeRange(0, 1)]isEqualToString:@"-"]) {
  285. [mutableStr insertString:@"," atIndex:index+1];
  286. }else{
  287. [mutableStr insertString:@"," atIndex:index];
  288. }
  289. }else{
  290. [mutableStr insertString:@"," atIndex:index+1];
  291. }
  292. }
  293. }
  294. }
  295. //如果textfield为空时 自动补0
  296. if ([mutableStr isEqualToString:@""]) {
  297. mutableStr=[NSMutableString stringWithString:@"0"];
  298. }
  299. self.TF.text=mutableStr;
  300. }
  301. //去除textfield格式
  302. -(void)removeTextFieldFormat{
  303. if ([self.TF.text isEqualToString:@"0"]) {
  304. self.TF.text=@"";
  305. }
  306. self.TF.text=[self.TF.text stringByReplacingOccurrencesOfString:@"," withString:@""];
  307. }
  308. //textField内容处理方法 限制输入长度 添加分隔符
  309. -(void)textFieldValueChange:(UITextField *)tf Button:(UIButton *)sender{
  310. NSString *buttonTitleStr=sender.titleLabel.text;
  311. if ([self getNumberCount:tf.text]<9) {
  312. tf.text=[tf.text stringByAppendingString:buttonTitleStr];
  313. }
  314. NSLog(@"tf.text = %@",tf.text);
  315. if(tf.text.length == 4){
  316. [self verifyPwdFun:tf.text];
  317. }
  318. // if ([tf.text isEqualToString:pwd]){
  319. // [connectDeviceManager shareInstance].isFirstInputPwdDone = YES;
  320. //
  321. // [[NSNotificationCenter defaultCenter] postNotificationName:ShowImgAndVoiceNotification object:nil];
  322. //
  323. // [self.view removeFromSuperview];
  324. // }
  325. }
  326. #pragma mark 验证密码是否正确
  327. -(void)verifyPwdFun:(NSString*)text{
  328. /*先判断本地有无设备 无设备时需要先扫码添加设备*/
  329. NSDictionary *deviceDict = [HWDataManager getObjectWithKey:Const_Have_Add_Device];
  330. if (deviceDict && [[deviceDict allKeys] containsObject:Const_Have_Add_Device_SN]){
  331. //有设备了先去做链接准备 // 80bec9c5
  332. NSString *SNStr = deviceDict[@"Const_Have_Add_Device_SN"];
  333. if(SNStr){
  334. NSString *curPwd = nil;
  335. NSString*desPwdStr = nil;
  336. if(ksharedAppDelegate.DeviceThirdIdMod.data.password
  337. && ksharedAppDelegate.DeviceThirdIdMod.data.password.length > 0){
  338. curPwd = ksharedAppDelegate.DeviceThirdIdMod.data.password;
  339. desPwdStr = [RSATool AES128Decrypt:curPwd key:AESCODEKEEYY];
  340. }
  341. else{
  342. if(deviceDict && [[deviceDict allKeys] containsObject:Const_Have_Add_Device_PWD])
  343. {
  344. desPwdStr = deviceDict[Const_Have_Add_Device_PWD];
  345. }
  346. }
  347. if ([desPwdStr isEqualToString:text]){
  348. HLog(@"输入密码正确")
  349. if([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
  350. {
  351. //[[iToast makeText:NSLocalizedString(@"phone_network_fail_Tips",nil)] show];
  352. customToastVew *view = [customToastVew makeText:NSLocalizedString(@"phone_network_fail_Tips",nil)];
  353. [view show];
  354. [self.view addSubview:view];
  355. return;
  356. }
  357. ksharedAppDelegate.isFirstInputPwdDone = YES;
  358. ksharedAppDelegate.isDidShowPwdType = NO;
  359. [self.view removeFromSuperview];
  360. //被别的设备挤下线 重新链接 如果是链接中 走这个函数会被return
  361. if(![webRtcManager shareManager].isWaitShowLogoutAlert){
  362. [[webRtcManager shareManager] beginToLinkWebRtcFun];
  363. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  364. [[NSNotificationCenter defaultCenter] postNotificationName:didInputPWDNotification object:nil];
  365. });
  366. }
  367. }
  368. }
  369. }
  370. }
  371. //小数点限制方法
  372. -(void)decimalPoint:(UITextField *)tf Button:(UIButton *)sender{
  373. //判断是否已经输入小数点
  374. if (![tf.text containsString:@"."]) {
  375. tf.text=[tf.text stringByAppendingString:sender.titleLabel.text];
  376. }
  377. //判断是否直接输入小数点
  378. if([self.TF.text isEqualToString:@"."]){
  379. self.TF.text=@"0.";
  380. }
  381. }
  382. //获取小数点左边数字个数
  383. -(NSInteger)getPointLeft:(NSString *)str{
  384. NSInteger pointLeft=str.length;
  385. //判断是否包含小数点 如果包含获取小数点左边的数字个数
  386. if ([str containsString:@"."]) {
  387. NSRange range = [str rangeOfString:@"."];
  388. NSLog(@"getPointLeft=%ld",range.location);
  389. pointLeft=range.location;
  390. }
  391. //判断是否包含负号
  392. if ([str containsString:@"-"]) {
  393. pointLeft-=1;
  394. }
  395. return pointLeft;
  396. }
  397. //获取小数点右边数字个数
  398. -(NSInteger)getPointRight:(NSString *)str{
  399. NSInteger pointRight=0;
  400. //判断是否包含小数点 如果包含获取小数点右边的数字个数
  401. if ([str containsString:@"."]) {
  402. NSRange range = [str rangeOfString:@"."];
  403. NSLog(@"getPointRight=%ld",str.length- range.location);
  404. pointRight=str.length- range.location;
  405. }
  406. return pointRight;
  407. }
  408. //获取纯数字个数
  409. -(NSInteger)getNumberCount:(NSString *)str{
  410. NSInteger numberCount=str.length;
  411. //判断是否包含小数点
  412. if ([str containsString:@"."]) {
  413. numberCount-=1;
  414. }
  415. //判断是否包含负号
  416. if ([str containsString:@"-"]) {
  417. numberCount-=1;
  418. }
  419. //判断是否包含分隔逗号
  420. if ([str containsString:@","]) {
  421. if ([self getPointLeft:str]<5) {
  422. numberCount-=1;
  423. }else{
  424. numberCount-=2;
  425. }
  426. }
  427. return numberCount;
  428. }
  429. //UIColor 转UIImage
  430. - (UIImage*) createImageWithColor: (UIColor*) color{
  431. CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
  432. UIGraphicsBeginImageContext(rect.size);
  433. CGContextRef context = UIGraphicsGetCurrentContext();
  434. CGContextSetFillColorWithColor(context, [color CGColor]);
  435. CGContextFillRect(context, rect);
  436. UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
  437. UIGraphicsEndImageContext();
  438. return theImage;
  439. }
  440. - (void)didReceiveMemoryWarning {
  441. [super didReceiveMemoryWarning];
  442. // Dispose of any resources that can be recreated.
  443. }
  444. #pragma mark ----运算----
  445. //正负数转换
  446. -(void)getPlusMinus:(NSString *)number{
  447. self.TF.text=[self.cl getPlusMinus:self.TF.text];
  448. [self textFieldLastValue];
  449. }
  450. //ios计算器bug
  451. //2 * 9 ÷ 目前等于18 转换正负数会变为-0
  452. //计算百分比
  453. -(void)getPercentage:(NSString *)number{
  454. //记录特殊情况--忘记密码输入
  455. if(!number || number.intValue == 0){
  456. if(!_curKeyToForgetPwd || _curKeyToForgetPwd.length == 0){
  457. _curKeyToForgetPwd = [[NSMutableString alloc] initWithFormat:@"%@",@"%"];
  458. //HLog(@"11:%@",_curKeyToForgetPwd);
  459. }
  460. else if(_curKeyToForgetPwd.length == 3){
  461. [_curKeyToForgetPwd appendString:@"%"];
  462. [self checkOrderToForgetPwdFun];
  463. }
  464. }
  465. number=[NSString stringWithFormat:@"%f",[number doubleValue]/100];
  466. //去除floa转换后后面多余的0
  467. self.TF.text = [NSString stringFloatHandle:number];
  468. [self textFieldLastValue];
  469. }
  470. //ios计算器bug
  471. //5 * 点击% 变成0.05 再点6 等于30 而不是0.3
  472. //判断textfield上的内容是否为上一次的运算结果 并进行赋值操作 以保证连续运算时执行以上两种操作后的结果能够正确参与运算
  473. -(void)textFieldLastValue{
  474. //如果number1和result都不为空 number2为空 并且清空计数为1(说明刚刚点击过运算符号button) 说明当前textfield上的内容为上一次的运算结果
  475. if (self.cl.number1 != nil) {
  476. if (self.cl.result != nil) {
  477. if (self.cl.number2==nil) {
  478. if (self.emptyCount==1) {
  479. self.cl.number1=self.TF.text;//将转换后的值赋给number1,以便下次运算使用
  480. }
  481. }
  482. }
  483. }
  484. }
  485. //四则运算
  486. -(void)execute{
  487. if(self.emptyCount==0){
  488. if(self.cl.number1 ==nil){
  489. self.cl.number1=self.TF.text;
  490. }else{
  491. self.cl.number2=self.TF.text;
  492. }
  493. //如果number1和number2都不为空 进行计算
  494. if (self.cl.number2 != nil && self.cl.number1 != nil) {
  495. //判断除数是否为0
  496. if([self.cl.number2 isEqualToString:@""]&&self.cl.exType==1){
  497. self.TF.text=@"错误";
  498. }else{
  499. self.TF.text=[self.cl Execute];
  500. }
  501. }
  502. //清空计数
  503. self.emptyCount=1;
  504. }
  505. }
  506. #pragma mark 按=号
  507. - (void)didClickEqualbuttonFun
  508. {
  509. //记录特殊情况--忘记密码输入
  510. //HLog(@"22:%@",self.TF.text)
  511. if(!self.TF.text
  512. || self.TF.text.length == 0
  513. || [self.TF.text isEqualToString:@"0"]){
  514. if(_curKeyToForgetPwd
  515. && _curKeyToForgetPwd.length >=1
  516. && [keyToForgetPwd rangeOfString:_curKeyToForgetPwd].location != NSNotFound
  517. ){
  518. [_curKeyToForgetPwd appendString:@"="];
  519. }
  520. }
  521. }
  522. #pragma mark 验证是否为忘记密码指令
  523. - (void)checkOrderToForgetPwdFun
  524. {
  525. if([_curKeyToForgetPwd isEqualToString:keyToForgetPwd]){
  526. [[NSNotificationCenter defaultCenter] postNotificationName:forgetPwdNotification object:nil];
  527. }
  528. _curKeyToForgetPwd = [NSMutableString new];
  529. }
  530. @end