// // NewDeliveryListCellTableViewCell.m // IBOSS // // Created by guan hong hou on 2017/7/10. // Copyright © 2017年 沈阳东科云信软件有限公司. All rights reserved. // // 功能描述:新增配送列表明细单元格 #import "NewDeliveryListTableViewCell.h" #import "OrderQuantity.h" #define kTextFont [UIFont systemFontOfSize:LabelAndTextFontOfSize] @implementation NewDeliveryListTableViewCell #pragma mark - 公共函数 /** 初始化单元格 @param style <#style description#> @param reuseIdentifier <#reuseIdentifier description#> @return <#return value description#> */ - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { } return self; } /** 单元格选中事件 @param selected <#selected description#> @param animated <#animated description#> */ - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; } #pragma mark - 委托函数 /** 限制用户输入小数点后位数的方法 @param textField <#textField description#> @param range <#range description#> @param string <#string description#> @return <#return value description#> */ - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if([textField isEqual:self.remark]){ return YES; } if ([textField.text rangeOfString:@"."].location == NSNotFound) { _isHaveDian = NO; } if ([string length] > 0) { unichar single = [string characterAtIndex:0];//当前输入的字符 if ((single >= '0' && single <= '9') || single == '.') {//数据格式正确 //首字母不能为0和小数点 if([textField.text length] == 0){ if(single == '.') { [self showAlertViewText:@"第一个数字不能为小数点"]; [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } if([textField.text length] == 1 && [[textField.text substringToIndex:1] isEqualToString: @"0"]){ if(!(single == '.')) { [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } //输入的字符是否是小数点 if (single == '.') { if(!_isHaveDian)//text中还没有小数点 { _isHaveDian = YES; return YES; }else{ [self showAlertViewText:@"您已经输入过小数点了"]; [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } }else{ if (_isHaveDian) {//存在小数点 //判断小数点的位数 NSRange ran = [textField.text rangeOfString:@"."]; if (range.location - ran.location <= 6) { return YES; } else{ return NO; } }else{ return YES; } } }else{//输入的数据格式不正确 [self showAlertViewText:@"您输入的格式不正确"]; [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } else { return YES; } } /** 文本字段开始编辑回调 @param textField <#textField description#> */ - (void)textFieldDidBeginEditing:(UITextField *)textField{ NSLog(@"textFieldDidBeginEditing"); if([textField isEqual:self.remark]||[textField isEqual:self.receiptQuantity] ){ if([self.nddelegate respondsToSelector:@selector(keyboardWillShow:)]) { [self.nddelegate keyboardWillShow:self]; } } } /** 文本字段结束编辑回调 @param textField <#textField description#> */ - (void)textFieldDidEndEditing:(UITextField *)textField{ if([textField isEqual:self.remark]){ if([self.nddelegate respondsToSelector:@selector(keyboardWillHide:)]) { [self.nddelegate keyboardWillHide:self]; } }else if([textField isEqual:self.receiptQuantity]){ OrderQuantity *quantity = [OrderQuantity new]; NSInteger decimalPlaces= self.model.decimalPlaces; NSString *receiptQuantity = [quantity calculateReceiptQuantity:[self.model.circulateType integerValue] decimalPlaces:[NSString stringWithFormat:@"%ld",(long)decimalPlaces] quantity:self.receiptQuantity.text acreage:[self.model.acreage doubleValue]]; self.receiptQuantity.text = receiptQuantity; self.model.receiptQuantity = receiptQuantity; [self.nddelegate keyboardWillHide:self]; } if([self.nddelegate respondsToSelector:@selector(endEdit:)]) { [self.nddelegate endEdit:self]; } return ; } #pragma mark - 私有函数 /** 设置回执类型 @param receiptType <#receiptType description#> */ - (void)setReceiptType:(NSString *)receiptType{ _receiptType=receiptType; } /** 设置配送回执单元格UI和数据 @param model <#model description#> @param receiptType <#receiptType description#> */ - (void)parseInfoModel:(NewDeliveryReceiptModel *)model receiptType:(NSString*)receiptType{ if(model != nil){ UILabel *lblTitleOnlyCode = [UILabel new]; lblTitleOnlyCode.frame=CGRectMake(20, 8, 80,21); lblTitleOnlyCode.text = @"唯一编码:"; lblTitleOnlyCode.font=kTextFont; [self addSubview:lblTitleOnlyCode]; self.lblOnlyCode = [UILabel new]; self.lblOnlyCode.font=kTextFont; self.lblOnlyCode.frame=CGRectMake(95, 8,200,21); [self.contentView addSubview:self.lblOnlyCode]; UILabel *lblTitleCode = [UILabel new]; lblTitleCode.frame=CGRectMake(20,CGRectGetMaxY(lblTitleOnlyCode.frame)+10, 80,21); lblTitleCode.text = @"商品编码:"; lblTitleCode.font=kTextFont; [self.contentView addSubview:lblTitleCode]; self.code=[UILabel new]; self.code.font=kTextFont; self.code.frame=CGRectMake(95,CGRectGetMaxY(lblTitleOnlyCode.frame)+10,200,21); [self.contentView addSubview: self.code]; UILabel *lblDeliveryQuantity = [UILabel new]; lblDeliveryQuantity.frame=CGRectMake(20, CGRectGetMaxY(lblTitleCode.frame)+10,80, 21); lblDeliveryQuantity.font=kTextFont; lblDeliveryQuantity.text = @"送货数量:"; [self addSubview:lblDeliveryQuantity]; self.deliveryQuantity = [UILabel new]; self.deliveryQuantity.font=kTextFont; self.deliveryQuantity.frame=CGRectMake(95, CGRectGetMaxY(lblTitleCode.frame)+10, 200, 21); [self.contentView addSubview:self.deliveryQuantity]; UILabel *lblOutQuantity = [UILabel new]; lblOutQuantity.text = @"出库数量:"; lblOutQuantity.font=kTextFont; lblOutQuantity.frame=CGRectMake(Screen_Width/2, CGRectGetMaxY(lblTitleCode.frame)+10, 75, 21); [self.contentView addSubview:lblOutQuantity]; self.outQuantity = [UILabel new]; self.outQuantity.font=kTextFont; self.outQuantity.frame=CGRectMake(CGRectGetMaxX(lblOutQuantity.frame), CGRectGetMaxY(lblTitleCode.frame)+10, 200, 21); [self.contentView addSubview:self.outQuantity]; UILabel *lblReceiptType = [UILabel new]; lblReceiptType.frame=CGRectMake(20,CGRectGetMaxY(lblDeliveryQuantity.frame)+10, 80,21); lblReceiptType.text = @"回执类型:"; lblReceiptType.font=kTextFont; [self.contentView addSubview:lblReceiptType]; self.btstate = [UIButton buttonWithType:UIButtonTypeCustom]; self.btstate.frame=CGRectMake(95,CGRectGetMaxY(lblDeliveryQuantity.frame)+10,80, 21); self.btstate.titleLabel.font=kTextFont; self.btstate.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [self.btstate setTitle:@"完成" forState:UIControlStateNormal]; [self.btstate setTitleColor:[UIColor blackColor]forState:UIControlStateNormal]; [self.contentView addSubview:self.btstate]; UILabel *lblReceiptQuantity = [UILabel new]; lblReceiptQuantity.frame=CGRectMake(20,CGRectGetMaxY(lblReceiptType.frame)+10,80,21); lblReceiptQuantity.text = @"回执数量:"; lblReceiptQuantity.font=kTextFont; [self.contentView addSubview:lblReceiptQuantity]; self.receiptQuantity = [[UITextField alloc]initWithFrame:CGRectMake(95,CGRectGetMaxY(lblReceiptType.frame)+10,200,21)]; self.receiptQuantity.font=kTextFont; [self.contentView addSubview:self.receiptQuantity]; UILabel *lblRemarks = [UILabel new]; lblRemarks.frame=CGRectMake(20,CGRectGetMaxY(lblReceiptQuantity.frame)+10,80,21); lblRemarks.text = @"回执备注:"; lblRemarks.font=kTextFont; [self.contentView addSubview:lblRemarks]; self.remark = [[UITextField alloc]initWithFrame:CGRectMake(95,CGRectGetMaxY(lblReceiptQuantity.frame)+10,200,21)]; self.remark.font=kTextFont; [self.contentView addSubview:self.remark]; UIView *separatorView = [UIView new]; separatorView.frame=CGRectMake(0,CGRectGetMaxY(lblRemarks.frame)+10, Screen_Width, 3); separatorView.backgroundColor=LineBackgroundColor; [self.contentView addSubview:separatorView]; if([receiptType intValue] == 1){ [self.btstate setEnabled:YES]; } else if([receiptType intValue] == 2){ [self.btstate setEnabled:NO]; } self.sCode=model.code; self.sDeliveryQuantity=model.deliveryQuantity; self.sReceiptType=model.receiptType; self.sReceiptRemarks=model.receiptRemarks; self.sOutQuantity=model.outQuantity; self.sDetailID=model.detailId; self.sInvoiceID=model.invoiceId; self.sInvoiceDetailID=model.invoiceDetailId; self.code.text=_sCode; self.deliveryQuantity.text=_sDeliveryQuantity; self.lblOnlyCode.text=model.onlyCode; self.outQuantity.text=_sOutQuantity; self.remark.text=_sReceiptRemarks; self.remark.placeholder = @"请输入回执备注"; self.remark.delegate=self; self.remark.tag=1001; self.receiptQuantity.delegate=self; self.receiptQuantity.placeholder = @"请输入回执数量"; self.receiptQuantity.keyboardType=UIKeyboardTypeDecimalPad; self.receiptQuantity.tag=1000; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onFocusPeopleEditingChanged:) name:@"UITextFieldTextDidChangeNotification" object: self.receiptQuantity]; [self.receiptQuantity addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; [self.remark addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; [self.btstate addTarget:self action:@selector(btnCilck) forControlEvents:UIControlEventTouchUpInside]; _model=model; switch ([_sReceiptType intValue]) { case 1: [self.btstate setTitle:@"完成" forState:UIControlStateNormal]; [self.receiptQuantity setEnabled:NO]; if([model.circulateType intValue] == 1){ self.receiptQuantity.text=[NSString stringWithFormat:@"%.0f",model.maxReceiptQuantity]; model.receiptQuantity = [NSString stringWithFormat:@"%.0f",model.maxReceiptQuantity]; }else{ self.receiptQuantity.text=[NSString stringWithFormat:@"%.6f",model.maxReceiptQuantity]; model.receiptQuantity = [NSString stringWithFormat:@"%.6f",model.maxReceiptQuantity]; } if([receiptType intValue] == 2){ self.receiptQuantity.text=@"0"; model.receiptQuantity = @"0"; } break; case 2: [self.btstate setTitle:@"再送" forState:UIControlStateNormal]; [self.receiptQuantity setEnabled:YES]; self.receiptQuantity.text = model.receiptQuantity; break; case 3: [self.btstate setTitle:@"换货" forState:UIControlStateNormal]; [self.receiptQuantity setEnabled:NO]; self.receiptQuantity.text = @"0"; _model.receiptQuantity = @"0"; break; case 4: [self.btstate setTitle:@"退货" forState:UIControlStateNormal]; [self.receiptQuantity setEnabled:NO]; self.receiptQuantity.text = @"0"; _model.receiptQuantity = @"0"; break; default: break; } } } - (void)setback:(int)mytage:(NSString *)mystateid{ [self.btstate setTitle:@"退货" forState:UIControlStateNormal]; self.outQuantity.text = @"5"; _model.outQuantity = @"5"; } /** 文本框长度限制 @param sender <#sender description#> */ - (void)onFocusPeopleEditingChanged:(NSNotification *)sender { UITextField *textField = (UITextField *)sender.object; NSString *toBeString = textField.text; NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage; int kMaxLength=0; if([textField isEqual:self.remark]){ return; } if([textField isEqual:self.receiptQuantity]){ kMaxLength=17; if (toBeString != nil && toBeString.length>0 && [toBeString floatValue]-MAXIMUM_QUANTITY>0.0000000001f) { textField.text = MAX_COUNT ; toBeString = MAX_COUNT; } } if ([lang isEqualToString:@"zh-Hans"]) { UITextRange *selectedRange = [textField markedTextRange]; UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; if (!position) { if (toBeString.length > kMaxLength) { textField.text = [toBeString substringToIndex:kMaxLength]; } } }else{ if (toBeString.length > kMaxLength) { textField.text = [toBeString substringToIndex:kMaxLength]; } } } /** 出示警告对话框 @param text <#text description#> */ - (void)showAlertViewText:(NSString *)text { UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示" message:text delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alert show]; } /** 回执类型点击事件 */ - (void)btnCilck{ if ([self.delegate respondsToSelector:@selector(setReceiptType:)]) { [self.delegate setReceiptType:_myIndexPath]; } } /** 文本字段变化事件 @param sender <#sender description#> */ - (void)textFieldDidChange:(UITextField*) sender{ UITextField* txt=sender; if([self.nddelegate respondsToSelector:@selector(textValueChange:txtField:qualityField:remarkField:)]) { [self.nddelegate textValueChange:self txtField:txt qualityField:nil remarkField:nil]; } } @end