QuizViewController.m 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. //
  2. // QuizViewController.m
  3. // OneCable
  4. //
  5. // Created by nComz on 2017. 3. 17..
  6. // Copyright © 2017년 ntels. All rights reserved.
  7. //
  8. #import "QuizViewController.h"
  9. #import "CustomButton.h"
  10. #import "CustomTextField.h"
  11. #import "RequestHandler.h"
  12. #import "IDSetViewController.h"
  13. #import "CommonUtil.h"
  14. /**
  15. 해당 메뉴는 멤버만 출력
  16. **/
  17. @interface QuizViewController () <CustomTextFieldDelegate>{
  18. UIBarButtonItem *_btnKeyboardNext, *_btnKeyboardClose; // 키보드 출력시 다음,닫기 버튼추가
  19. UIToolbar *_toolBar; // 툴바 설정
  20. NSMutableArray *_barItems; // 툴바에 추가할 아이템
  21. UIBarButtonItem *_btnFlexibleSpace; // 여백 설정
  22. }
  23. @end
  24. @implementation QuizViewController
  25. @synthesize signUpModel;
  26. // 마스터가 멤버초대시 설정한 퀴즈 가져옴
  27. - (void)viewDidLoad {
  28. [super viewDidLoad];
  29. [self initUI];
  30. [self requsetMasterQuiz];
  31. }
  32. // UI 설정
  33. - (void)initUI {
  34. [self.navigationController.navigationBar setHidden:YES];
  35. self.navigationController.interactivePopGestureRecognizer.enabled = NO;
  36. signUpModel.phone = _phoneNum;
  37. _btnNext.enabled = NO;
  38. [_lblStep setColor:kUITextColor03 text:[NSString stringWithFormat:@"%@", @"/ 5"]];
  39. [self initTextField:_txtYear placeholder:[CommonUtil currentYear]];
  40. [self initTextField:_txtMonth placeholder:[CommonUtil currentMonth]];
  41. [self initTextField:_txtDay placeholder:[CommonUtil currentDay]];
  42. }
  43. - (void)initTextField:(UITextField*)textfield
  44. placeholder:(NSString*)placeholder {
  45. textfield.delegate = self;
  46. textfield.placeholder = placeholder;
  47. textfield.keyboardType = UIKeyboardTypeNumberPad;
  48. }
  49. // 마스터가 설정한 퀴즈의 정답 체크 후 아이디/비밀번호 설정 메뉴로 이동
  50. - (void)requestAnswerQuiz{
  51. NSString *answer = [NSString stringWithFormat:@"%@%@%@",_txtYear.text,_txtMonth.text,_txtDay.text];
  52. //parameters
  53. NSDictionary *parameter = @{@"phone": signUpModel.phone ,
  54. @"answer": answer};
  55. NSString *path = [[JDFacade facade]getUrlWithCustAndGroupIDAndInputMemId:API_POST_QUIZ_SEND inputId:@""];
  56. [[RequestHandler handler] sendAsyncPostRequestAPIPath:path parameters:parameter modelClass:[JDJSONModel class] completion:^(id responseObject) {
  57. IDSetViewController *vc = [CommonUtil instantiateViewControllerWithIdentifier:@"IDSetViewController" storyboardName:@"SignUp"];
  58. vc.signUpModel = signUpModel;
  59. [self.navigationController pushViewController:vc animated:YES];
  60. } failure:^(id errorObject) {
  61. JDErrorModel *error = (JDErrorModel *)errorObject;
  62. [[JDFacade facade] alert:error.errorMessage];
  63. }];
  64. }
  65. // 마스터가 멤버초대시 설정한 퀴즈 가져오기
  66. - (void)requsetMasterQuiz {
  67. //parameters
  68. NSDictionary *parameter = @{@"phone": signUpModel.phone};
  69. NSString *path = [[JDFacade facade]getUrlWithCustAndGroupIDAndInputMemId:API_POST_REQUEST_QUIZ inputId:@""];
  70. [[RequestHandler handler] sendAsyncPostRequestAPIPath:path parameters:parameter modelClass:[QuizModel class] completion:^(id responseObject) {
  71. QuizModel *quizModel = (QuizModel *) responseObject;
  72. _lblQuiz.text = quizModel.quiz;
  73. } failure:^(id errorObject) {
  74. JDErrorModel *error = (JDErrorModel *)errorObject;
  75. [[JDFacade facade] alert:error.errorMessage];
  76. }];
  77. }
  78. // 다음 버튼 터치시 퀴즈정답 체크
  79. - (IBAction)btnNextTouched:(id)sender {
  80. [self requestAnswerQuiz];
  81. }
  82. // 메뉴 닫기
  83. - (IBAction)btnCancelTouched:(id)sender {
  84. [self dismissViewControllerAnimated:YES completion:nil];
  85. }
  86. // 년,월,일 입력 될 시 다음버튼 활성화
  87. - (void)textFieldDidEndEditing:(UITextField *)textField{
  88. // 월 입력시 1자리만 입력 된 경우 앞자리에 0추가
  89. if (_txtMonth.text.length == 1) {
  90. _txtMonth.text = [NSString stringWithFormat:@"0%@",_txtMonth.text];
  91. }
  92. // 일 입력시 1자리만 입력 된 경우 앞자리에 0추가
  93. if (_txtDay.text.length == 1) {
  94. _txtDay.text = [NSString stringWithFormat:@"0%@",_txtDay.text];
  95. }
  96. //년 4글자, 월 2글자, 일 2글자 입력시 다음 버튼 활성화
  97. if (_txtYear.text.length >= 4 && _txtMonth.text.length >= 2 && _txtDay.text.length >=2){
  98. _btnNext.enabled = YES;
  99. } else {
  100. _btnNext.enabled = NO;
  101. }
  102. }
  103. // 년,월,일 최대 입력 글자 설정
  104. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  105. if ([textField isEqual:_txtYear]) {
  106. if (textField.text.length >= 4 && range.length == 0) {
  107. return NO;
  108. }
  109. } else if([textField isEqual:_txtMonth]){
  110. if (textField.text.length >= 2 && range.length == 0) {
  111. return NO;
  112. }
  113. } else if ([textField isEqual:_txtDay]){
  114. if (textField.text.length >= 2 && range.length == 0) {
  115. return NO;
  116. }
  117. }
  118. return YES;
  119. }
  120. #pragma mark - textfield delegate
  121. - (void)moveToPrevField:(id)sender {
  122. UITextField *tf = sender;
  123. NSInteger tag = tf.tag;
  124. if ( ![tf isEqual:_txtYear] ) {
  125. UITextField *prevTf = [self.view viewWithTag:tag - 1] ;
  126. [prevTf becomeFirstResponder] ;
  127. }
  128. }
  129. - (void)moveToNextField:(id)sender {
  130. UITextField *tf = sender;
  131. NSInteger tag = tf.tag;
  132. if ( ![tf isEqual:_txtDay] ) {
  133. UITextField *prevTf = [self.view viewWithTag:tag + 1] ;
  134. [prevTf becomeFirstResponder] ;
  135. }
  136. }
  137. // 키보드에서 닫기버튼 터치시 키보드 내려감
  138. - (void)hideKeyboard {
  139. [_txtYear resignFirstResponder];
  140. [_txtMonth resignFirstResponder];
  141. [_txtDay resignFirstResponder];
  142. }
  143. - (void)didReceiveMemoryWarning {
  144. [super didReceiveMemoryWarning];
  145. }
  146. @end