RAEditScanInputCell.m 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. //
  2. // RAEditScanInputCell.m
  3. // Apex And Drivers
  4. //
  5. // Created by Jack on 2018/6/4.
  6. // Copyright © 2018年 USAI. All rights reserved.
  7. //
  8. #import "RAEditScanInputCell.h"
  9. #import "RAEditInputModel.h"
  10. @interface RAEditScanInputCell () <UITextFieldDelegate,RAEditModelDelegate>
  11. @property (strong, nonatomic) IBOutlet UILabel *titlelabel;
  12. @property (nonatomic,strong) IBOutlet UILabel *startLabel;
  13. @property (strong, nonatomic) IBOutlet UITextField *inputTextField;
  14. @end
  15. @implementation RAEditScanInputCell
  16. - (void)awakeFromNib {
  17. [super awakeFromNib];
  18. // Initialization code
  19. self.model = nil;
  20. }
  21. - (void)prepareForReuse {
  22. [super prepareForReuse];
  23. self.model = nil;
  24. self.delegate = nil;
  25. }
  26. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  27. [super setSelected:selected animated:animated];
  28. // Configure the view for the selected state
  29. }
  30. - (void)setModel:(RAEditInputModel *)model {
  31. if (_model) {
  32. _model.delegate = nil;
  33. }
  34. _model = model;
  35. _model.delegate = self;
  36. [self refresh];
  37. }
  38. - (void)scanBtnClick:(UIButton *)sender {
  39. if (self.delegate && [self.delegate respondsToSelector:@selector(scanInputCell:clickScanButton:)]) {
  40. [self.delegate scanInputCell:self clickScanButton:sender];
  41. }
  42. }
  43. #pragma mark - Edit Model Delegate
  44. - (void)refresh {
  45. self.titlelabel.text = _model.title;
  46. self.inputTextField.text = _model.value;
  47. if (_model.scannable) {
  48. self.inputTextField.rightViewMode = UITextFieldViewModeAlways;
  49. UIButton *scanBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  50. scanBtn.bounds = CGRectMake(0, 0, 30, 30);
  51. [scanBtn setImage:[UIImage imageNamed:@"btn_scanner"] forState:UIControlStateNormal];
  52. // [scanBtn setImage:[UIImage imageNamed:@"Barcode_h"] forState:UIControlStateHighlighted];
  53. [scanBtn addTarget:self action:@selector(scanBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  54. self.inputTextField.rightView = scanBtn;
  55. } else {
  56. self.inputTextField.rightViewMode = UITextFieldViewModeNever;
  57. self.inputTextField.rightView = nil;
  58. }
  59. self.startLabel.hidden = !_model.required;
  60. }
  61. - (void)unbind {
  62. _model = nil;
  63. [self refresh];
  64. }
  65. #pragma mark - TextField Delegate
  66. - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
  67. if (self.delegate && [self.delegate respondsToSelector:@selector(beginEditInputCell:)]) {
  68. [self.delegate beginEditInputCell:self];
  69. }
  70. return YES;
  71. }
  72. - (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
  73. if (self.delegate && [self.delegate respondsToSelector:@selector(endEditInputCell:)]) {
  74. [self.delegate endEditInputCell:self];
  75. }
  76. return YES;
  77. }
  78. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  79. NSString *newStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
  80. [self.model updateValue:newStr];
  81. return YES;
  82. }
  83. @end