FirstSettingBodyView.m 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. //
  2. // FirstSettingBodyView.m
  3. // KulexiuForTeacher
  4. //
  5. // Created by Kyle on 2022/3/20.
  6. //
  7. #import "FirstSettingBodyView.h"
  8. @interface FirstSettingBodyView ()<UITextFieldDelegate>
  9. @property (weak, nonatomic) IBOutlet UITextField *nameField;
  10. @property (weak, nonatomic) IBOutlet UITextField *firstField;
  11. @property (weak, nonatomic) IBOutlet UITextField *secondField;
  12. @property (nonatomic, copy) SettingEndCallback callback;
  13. @property (nonatomic, copy) SexChooseCallback chooseSexBlock;
  14. @end
  15. @implementation FirstSettingBodyView
  16. - (void)awakeFromNib {
  17. [super awakeFromNib];
  18. self.firstField.delegate = self;
  19. self.secondField.delegate = self;
  20. self.nameField.delegate = self;
  21. if (@available(iOS 10.0, *)) {
  22. self.nameField.textContentType = UITextContentTypeName;
  23. self.firstField.textContentType = UITextContentTypeName;
  24. self.secondField.textContentType = UITextContentTypeName;
  25. }
  26. if (@available(iOS 12.0, *)) {
  27. self.nameField.textContentType = UITextContentTypeOneTimeCode;
  28. self.firstField.textContentType = UITextContentTypeOneTimeCode;
  29. self.secondField.textContentType = UITextContentTypeOneTimeCode;
  30. }
  31. [self.nameField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
  32. }
  33. + (instancetype)shareInstance {
  34. FirstSettingBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"FirstSettingBodyView" owner:nil options:nil] firstObject];
  35. return view;
  36. }
  37. - (void)sureCallback:(SettingEndCallback)callback {
  38. if (callback) {
  39. self.callback = callback;
  40. }
  41. }
  42. - (void)chooseSexCallback:(SexChooseCallback)callback {
  43. if (callback) {
  44. self.chooseSexBlock = callback;
  45. }
  46. }
  47. - (IBAction)chooseSex:(id)sender {
  48. if (self.chooseSexBlock) {
  49. self.chooseSexBlock();
  50. }
  51. }
  52. - (IBAction)sureAction:(id)sender {
  53. [self endEditing:YES];
  54. if ([NSString isEmptyString:self.nameField.text]) {
  55. [self MBPShow:@"请输入您的昵称"];
  56. return;
  57. }
  58. if ([NSString isEmptyString:self.firstField.text]) {
  59. [self MBPShow:@"请设置登录密码"];
  60. return;
  61. }
  62. if (self.firstField.text.length < 6 || self.firstField.text.length > 20) {
  63. [self MBPShow:@"密码为6-20位数字/字母"];
  64. return;
  65. }
  66. if (![self.firstField.text isEqualToString:self.secondField.text]) {
  67. [self MBPShow:@"两次输入密码不一致"];
  68. return;
  69. }
  70. if (self.callback) {
  71. self.callback(self.firstField.text,self.nameField.text);
  72. }
  73. }
  74. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  75. if ([string isEqualToString:@" "]) {
  76. return NO;
  77. }
  78. if ([string isEqualToString:@"\n"]) {
  79. [self endEditing:YES];
  80. return YES;
  81. }
  82. return YES;
  83. }
  84. - (void)textFieldDidChange:(UITextField *)textField {
  85. NSInteger maxLength = 12;
  86. NSString *text = textField.text;
  87. NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage;
  88. if ([lang isEqualToString:@"zh-Hans"]) { //中文输入
  89. UITextRange *selectedRange = [textField markedTextRange];
  90. //获取高亮部分
  91. UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
  92. if (!position) {// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
  93. if (text.length > maxLength) {
  94. textField.text = [text substringToIndex:maxLength];
  95. }
  96. }
  97. else{//有高亮选择的字符串,则暂不对文字进行统计和限制
  98. }
  99. }else{//中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
  100. if (text.length > maxLength) {
  101. textField.text = [text substringToIndex:maxLength];
  102. }
  103. }
  104. }
  105. + (CGFloat)getViewHeight {
  106. return 690.0f;
  107. }
  108. /*
  109. // Only override drawRect: if you perform custom drawing.
  110. // An empty implementation adversely affects performance during animation.
  111. - (void)drawRect:(CGRect)rect {
  112. // Drawing code
  113. }
  114. */
  115. @end