PwdInPutView.m 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. //
  2. // PwdInPutView.m
  3. // VclustersGemini
  4. //
  5. // Created by APPLE on 2023/2/20.
  6. // Copyright © 2023 APPLE. All rights reserved.
  7. //
  8. #import "PwdInPutView.h"
  9. #import "ForbidMenuTextField.h"
  10. #import "UITextfield+NLLimit.h"
  11. #import "UITextField+SPExtension.h"
  12. @interface PwdInPutView()<UITextFieldDelegate>
  13. @property (strong, nonatomic) ForbidMenuTextField *oneTextField;
  14. @property (strong, nonatomic) ForbidMenuTextField *twoTextField;
  15. @property (strong, nonatomic) ForbidMenuTextField *threeTextField;
  16. @property (strong, nonatomic) ForbidMenuTextField *fourTextField;
  17. @property (copy, nonatomic) NSMutableArray *textFieldArray;
  18. @end
  19. @implementation PwdInPutView
  20. @synthesize delegate;
  21. @synthesize pwd;
  22. - (id)initWithFrame:(CGRect)frame{
  23. self = [super initWithFrame:frame];
  24. if (self){
  25. [self drawAnyView];
  26. }
  27. return self;
  28. }
  29. - (void)drawAnyView{
  30. _oneTextField = [[ForbidMenuTextField alloc] init];
  31. [self addSubview:_oneTextField];
  32. [_oneTextField mas_makeConstraints:^(MASConstraintMaker *make) {
  33. make.left.mas_equalTo(0);
  34. make.centerY.equalTo(self.mas_centerY);
  35. make.width.mas_equalTo(48);
  36. make.height.mas_equalTo(48);
  37. }];
  38. _twoTextField = [[ForbidMenuTextField alloc] init];
  39. [self addSubview:_twoTextField];
  40. [_twoTextField mas_makeConstraints:^(MASConstraintMaker *make) {
  41. make.right.equalTo(self.mas_centerX).offset(-7.5);
  42. make.centerY.equalTo(self.mas_centerY);
  43. make.width.mas_equalTo(48);
  44. make.height.mas_equalTo(48);
  45. }];
  46. _threeTextField = [[ForbidMenuTextField alloc] init];
  47. [self addSubview:_threeTextField];
  48. [_threeTextField mas_makeConstraints:^(MASConstraintMaker *make) {
  49. make.left.equalTo(self.mas_centerX).offset(7.5);
  50. make.centerY.equalTo(self.mas_centerY);
  51. make.width.mas_equalTo(48);
  52. make.height.mas_equalTo(48);
  53. }];
  54. _fourTextField = [[ForbidMenuTextField alloc] init];
  55. [self addSubview:_fourTextField];
  56. [_fourTextField mas_makeConstraints:^(MASConstraintMaker *make) {
  57. make.right.mas_equalTo(0);
  58. make.centerY.equalTo(self.mas_centerY);
  59. make.width.mas_equalTo(48);
  60. make.height.mas_equalTo(48);
  61. }];
  62. [self configTextField];
  63. }
  64. - (void)configTextField {
  65. [self setEnableTextField:self.oneTextField];
  66. [self.oneTextField becomeFirstResponder];
  67. [self setDisableTextField:self.twoTextField];
  68. [self setDisableTextField:self.threeTextField];
  69. [self setDisableTextField:self.fourTextField];
  70. [self.oneTextField addTarget:self action:@selector(textFieldChange:) forControlEvents:UIControlEventEditingChanged];
  71. [self.twoTextField addTarget:self action:@selector(textFieldChange:) forControlEvents:UIControlEventEditingChanged];
  72. [self.threeTextField addTarget:self action:@selector(textFieldChange:) forControlEvents:UIControlEventEditingChanged];
  73. [self.fourTextField addTarget:self action:@selector(textFieldChange:) forControlEvents:UIControlEventEditingChanged];
  74. self.oneTextField.delegate = self;
  75. self.twoTextField.delegate = self;
  76. self.threeTextField.delegate = self;
  77. self.fourTextField.delegate = self;
  78. self.oneTextField.keyboardType = UIKeyboardTypeNumberPad;
  79. self.twoTextField.keyboardType = UIKeyboardTypeNumberPad;
  80. self.threeTextField.keyboardType = UIKeyboardTypeNumberPad;
  81. self.fourTextField.keyboardType = UIKeyboardTypeNumberPad;
  82. [self.oneTextField setNl_maxLength:1];
  83. [self.twoTextField setNl_maxLength:1];
  84. [self.threeTextField setNl_maxLength:1];
  85. [self.fourTextField setNl_maxLength:1];
  86. self.oneTextField.backgroundColor = HWFFFFFFColor10;
  87. self.twoTextField.backgroundColor = HWFFFFFFColor10;
  88. self.threeTextField.backgroundColor = HWFFFFFFColor10;
  89. self.fourTextField.backgroundColor = HWFFFFFFColor10;
  90. self.oneTextField.textColor = HWFFFFFFColor;
  91. self.twoTextField.textColor = HWFFFFFFColor;
  92. self.threeTextField.textColor = HWFFFFFFColor;
  93. self.fourTextField.textColor = HWFFFFFFColor;
  94. [self.oneTextField setFont:[UIFont boldSystemFontOfSize:24.f]];
  95. [self.twoTextField setFont:[UIFont boldSystemFontOfSize:24.f]];
  96. [self.threeTextField setFont:[UIFont boldSystemFontOfSize:24.f]];
  97. [self.fourTextField setFont:[UIFont boldSystemFontOfSize:24.f]];
  98. [self.oneTextField setTextAlignment:(NSTextAlignmentCenter)];
  99. [self.twoTextField setTextAlignment:(NSTextAlignmentCenter)];
  100. [self.threeTextField setTextAlignment:(NSTextAlignmentCenter)];
  101. [self.fourTextField setTextAlignment:(NSTextAlignmentCenter)];
  102. }
  103. // 选中
  104. - (void)setEnableTextField:(UITextField *)textField {
  105. textField.layer.cornerRadius = 8;
  106. textField.layer.masksToBounds = YES;
  107. textField.layer.borderWidth = 1;
  108. textField.layer.borderColor = HW05BAFBColor.CGColor;
  109. if (textField.text != nil && ![textField.text isEqualToString:@""]) {
  110. textField.backgroundColor = HW05BAFBColor;
  111. }
  112. else{
  113. textField.backgroundColor = HWFFFFFFColor10;
  114. }
  115. }
  116. // 取消选中
  117. - (void)setDisableTextField:(UITextField *)textField {
  118. textField.layer.cornerRadius = 8;
  119. textField.layer.masksToBounds = YES;
  120. textField.layer.borderWidth = 1;
  121. textField.layer.borderColor = HWFFFFFFColor10.CGColor;
  122. // [textField resignFirstResponder];
  123. if (textField.text != nil && ![textField.text isEqualToString:@""]) {
  124. textField.backgroundColor = HW05BAFBColor;
  125. }
  126. else{
  127. textField.backgroundColor = HWFFFFFFColor10;
  128. }
  129. }
  130. // 切换
  131. - (void)setEnableTextField:(UITextField *)newTextField disableTextField:(UITextField *)oldTextField {
  132. [self setDisableTextField:oldTextField];
  133. [oldTextField resignFirstResponder];
  134. [newTextField becomeFirstResponder];
  135. [self setEnableTextField:newTextField];
  136. }
  137. /*
  138. // Only override drawRect: if you perform custom drawing.
  139. // An empty implementation adversely affects performance during animation.
  140. - (void)drawRect:(CGRect)rect {
  141. // Drawing code
  142. }
  143. */
  144. #pragma mark - <UITextFieldDelegate> 监听删除按钮点击 限制其他textField响应
  145. - (void)textFieldChange:(UITextField *)textField {
  146. if (textField.text.length != 0) { // 删除操作
  147. NSInteger index = [self.textFieldArray indexOfObject:textField];
  148. if (index < self.textFieldArray.count - 1){
  149. [self setEnableTextField:self.textFieldArray[index+1] disableTextField:textField];
  150. }
  151. if (textField == self.textFieldArray.lastObject) {
  152. HLog(@"输入完成");
  153. /*确认按钮可以点击*/
  154. [self setEnableTextField:self.oneTextField];
  155. [self setEnableTextField:self.twoTextField];
  156. [self setEnableTextField:self.threeTextField];
  157. [self setEnableTextField:self.fourTextField];
  158. [textField resignFirstResponder];
  159. }
  160. }
  161. BOOL isOK = YES;
  162. for (int i = 0; i < self.textFieldArray.count; i++) {
  163. UITextField *smsTextField = self.textFieldArray[i];
  164. if (smsTextField.text == nil || [smsTextField.text isEqualToString:@""])
  165. {
  166. isOK = NO;
  167. break;
  168. }
  169. }
  170. if ([delegate respondsToSelector:@selector(pwdInPutViewPWDIsOk:)]){
  171. [delegate pwdInPutViewPWDIsOk:isOK];
  172. }
  173. }
  174. - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
  175. {
  176. // UITextField *edittextField = self.textFieldArray[self.indexEditor];
  177. // if ([edittextField isEqual:textField]) {
  178. return YES;
  179. // }else {
  180. // return NO;
  181. // }
  182. }
  183. - (void)textFieldDidDeleteBackward:(UITextField *)textField {
  184. HLog(@"删除操作");
  185. NSInteger index = [self.textFieldArray indexOfObject:textField];
  186. textField.text = @"";
  187. if (index > 0){
  188. [self setEnableTextField:self.textFieldArray[index - 1] disableTextField:self.textFieldArray[index]];
  189. }else{
  190. }
  191. BOOL isOK = YES;
  192. for (int i = 0; i < self.textFieldArray.count; i++) {
  193. UITextField *smsTextField = self.textFieldArray[i];
  194. if (smsTextField.text == nil || [smsTextField.text isEqualToString:@""])
  195. {
  196. isOK = NO;
  197. break;
  198. }
  199. }
  200. if ([delegate respondsToSelector:@selector(pwdInPutViewPWDIsOk:)]){
  201. [delegate pwdInPutViewPWDIsOk:isOK];
  202. }
  203. }
  204. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  205. if (string.length == 6) {
  206. NSArray *strARy = [string componentsSeparatedByString:@""];
  207. for (int i = 0; i < self.textFieldArray.count; i++) {
  208. UITextField *smsTextField = self.textFieldArray[i];
  209. smsTextField.text = strARy[i];
  210. }
  211. return NO;
  212. }
  213. return YES;
  214. }
  215. - (NSString *)pwd{
  216. NSString *resStr = self.oneTextField.text;
  217. resStr = [resStr stringByAppendingString:self.twoTextField.text];
  218. resStr = [resStr stringByAppendingString:self.threeTextField.text];
  219. resStr = [resStr stringByAppendingString:self.fourTextField.text];
  220. return resStr;
  221. }
  222. #pragma mark 懒加载
  223. - (NSMutableArray *)textFieldArray {
  224. if (!_textFieldArray) {
  225. _textFieldArray = [NSMutableArray arrayWithObjects:self.oneTextField, self.twoTextField, self.threeTextField, self.fourTextField, nil];
  226. }
  227. return _textFieldArray;
  228. }
  229. @end