| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484 |
- //
- // HJBasicInfoViewController.m
- // HappyJob
- //
- // Created by Bob on 2019/4/16.
- // Copyright © 2019 Bob. All rights reserved.
- //
- #import "HJBasicInfoViewController.h"
- #import "HJLabelTextFieldView.h"
- #import "HJSaveBasicInfoAPIManager.h"
- #import "UIViewController+FBImagePicker.h"
- #import "HJResumeDataBox.h"
- #import "UITextField+LimitLength.h"
- #import "HJExpectationViewController.h"
- @interface HJBasicInfoViewController ()
- <
- FBScrollLayoutViewDelegate,
- FBAPIManagerDelegate,
- UIImagePickerControllerDelegate,
- UINavigationControllerDelegate,
- UIGestureRecognizerDelegate
- >
- @property (nonatomic, strong) FBScrollLayoutView *scrollLayoutView;
- @property (nonatomic, strong) HJLabelTextFieldView *headerView;
- @property (nonatomic, strong) HJLabelTextFieldView *nameView;
- @property (nonatomic, strong) HJLabelTextFieldView *sexView;
- @property (nonatomic, strong) HJLabelTextFieldView *phoneView;
- @property (nonatomic, strong) HJLabelTextFieldView *yearView;
- @property (nonatomic, strong) HJLabelTextFieldView *educationView;
- @property (nonatomic, strong) HJLabelTextFieldView *WeChatView;
- @property (nonatomic, strong) UIButton *saveButton;
- @property (nonatomic, strong) ValuePickerView *pickView;
- @property (nonatomic, copy) NSArray *yearDataSource;
- @property (nonatomic, strong) HJSaveBasicInfoAPIManager *saveResumeBaseInfoAPIManager;
- @property (nonatomic, strong) HJResumeDataBox *resumeDataBox;
- @end
- @implementation HJBasicInfoViewController
- #pragma mark - life cycle
- - (void)viewWillAppear:(BOOL)animated {
-
- [super viewWillAppear:animated];
-
- [self.navigationController setNavigationBarHidden:NO animated:YES];
-
- if (self.isBackPop)
- {
- self.navigationController.interactivePopGestureRecognizer.delegate = self;
- }
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
-
- self.title = @"个人资料";
- [self hj_setupNavBar];
-
- [self.view addSubview:self.scrollLayoutView];
- self.view.backgroundColor = COLOR_F5F5F5;
- [self.scrollLayoutView.contentView addSubview:self.headerView];
- [self.scrollLayoutView.contentView addSubview:self.nameView];
- [self.scrollLayoutView.contentView addSubview:self.sexView];
- [self.scrollLayoutView.contentView addSubview:self.phoneView];
- [self.scrollLayoutView.contentView addSubview:self.yearView];
- [self.scrollLayoutView.contentView addSubview:self.educationView];
- [self.scrollLayoutView.contentView addSubview:self.WeChatView];
- [self.scrollLayoutView.contentView addSubview:self.saveButton];
- [self.scrollLayoutView makeConstraints];
- }
- #pragma mark - 导航栏的代理
- - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
-
- [self.navigationController setNavigationBarHidden:NO animated:YES];
- }
- #pragma mark - FBScrollLayoutViewDelegate
- - (void)scrollLayoutViewMakeConstraints:(FBScrollLayoutView *)scrollLayoutView {
-
- [scrollLayoutView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.right.equalTo(self.view);
- make.top.equalTo(self.view).offset(10);
- make.bottom.equalTo(self.view);
- }];
- }
- - (void)subviewsMakeConstraintsInScrollLayoutView:(FBScrollLayoutView *)scrollLayoutView contentView:(UIView *)contentView {
-
- [self.headerView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.left.right.equalTo(contentView);
- make.height.mas_equalTo(88);
- }];
- [self.headerView.contentImageV mas_remakeConstraints:^(MASConstraintMaker *make) {
-
- make.centerY.equalTo(self.headerView);
- make.right.equalTo(self.headerView.rightImageV.mas_left).with.offset(-15);
- make.size.mas_offset(CGSizeMake(50, 50));
- }];
- [self.nameView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.headerView.mas_bottom);
- make.left.right.equalTo(contentView);
- make.height.mas_equalTo(58);
- }];
- [self.sexView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.nameView.mas_bottom);
- make.left.right.equalTo(contentView);
- make.height.mas_equalTo(self.nameView);
- }];
- [self.phoneView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.sexView.mas_bottom);
- make.left.right.equalTo(contentView);
- make.height.mas_equalTo(self.nameView);
- }];
- [self.yearView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.phoneView.mas_bottom);
- make.left.right.equalTo(contentView);
- make.height.mas_equalTo(self.nameView);
- }];
- [self.educationView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.yearView.mas_bottom);
- make.left.right.equalTo(contentView);
- make.height.mas_equalTo(self.nameView);
- }];
- [self.WeChatView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.educationView.mas_bottom);
- make.left.right.equalTo(contentView);
- make.height.mas_equalTo(self.nameView);
- }];
-
- [self.saveButton mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.WeChatView.mas_bottom).offset(25);
- make.left.equalTo(contentView).offset(15);
- make.right.equalTo(contentView).offset(-15);
- make.height.mas_equalTo(44);
- }];
- [contentView mas_makeConstraints:^(MASConstraintMaker *make) {
- // 这里的约束一定要等于previousNextView,不然键盘的自动浮动效果有Bug。
- make.bottom.equalTo(self.saveButton);
- }];
- }
- #pragma mark - UIImagePickerControllerDelegate
- - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
- NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
- //当选择的类型是图片
- if ([type isEqualToString:@"public.image"])
- {
- //先把图片转成NSData
- UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
- self.headerView.contentImageV.image = image;
- //关闭相册界面
- [self dismissViewControllerAnimated:YES completion:nil];
- }
- }
- - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
-
- [self dismissViewControllerAnimated:YES completion:nil];
- }
- #pragma mark - FBAPIManagerDelegate
- - (void)managerCallAPIDidSuccess:(FBBaseAPIManager *)manager {
-
- if (manager == self.saveResumeBaseInfoAPIManager)
- {
- id fetchData = [manager fetchDataWithBox:self.resumeDataBox];
- if ([fetchData isKindOfClass:[NSString class]])
- {
- [self.view fb_showSuccessWithStatus:fetchData completion:^{
-
- if (self.isBackPop)
- {//返回到上个页面
- [self.navigationController popViewControllerAnimated:YES];
- }
- else
- {//不返回
- HJExpectationViewController *vc = [[HJExpectationViewController alloc] init];
- vc.isPopToRoot = YES;
- [self.navigationController pushViewController:vc animated:YES];
- }
- }];
- }
- }
- }
- - (void)managerCallAPIDidFailed:(FBBaseAPIManager *)manager {
-
- if (manager == self.saveResumeBaseInfoAPIManager)
- {
- id fetchData = [manager fetchDataWithBox:self.resumeDataBox];
- if ([fetchData isKindOfClass:[NSString class]])
- {
- [self.view fb_showFailureWithStatus:fetchData];
- }
- }
- }
- #pragma mark - event response
- - (void)saveButtonClicked:(UIButton *)sender {
-
- if (self.nameView.contentTextField.text.length == 0)
- {
- [self.view fb_showFailureWithStatus:@"请先填写您的姓名"];
- [self.nameView.contentTextField becomeFirstResponder];
- }
- else if (self.nameView.contentTextField.text.length > 30)
- {
- [self.view fb_showFailureWithStatus:@"姓名不能超过30个字符"];
- [self.nameView.contentTextField becomeFirstResponder];
- }
- else if (self.sexView.contentTextField.text.length == 0)
- {
- [self.view fb_showFailureWithStatus:@"请先填写您的性别"];
- [self.sexView.contentTextField becomeFirstResponder];
- }
- else if (self.phoneView.contentTextField.text.length != 11)
- {
- [self.view fb_showFailureWithStatus:@"请您填写正确的手机号"];
- [self.phoneView.contentTextField becomeFirstResponder];
- }
- else if (self.yearView.contentTextField.text.length == 0)
- {
- [self.view fb_showFailureWithStatus:@"请先填写您的出生年份"];
- [self.yearView.contentTextField becomeFirstResponder];
- }
- else if (self.educationView.contentTextField.text.length == 0)
- {
- [self.view fb_showFailureWithStatus:@"请先填写您的学历"];
- [self.educationView.contentTextField becomeFirstResponder];
- }
- else
- {
- [self.view fb_showLoading];
-
- UIImage *photo = self.headerView.contentImageV.image;
- if (photo && !CGSizeEqualToSize(photo.size, CGSizeZero))
- {
- self.saveResumeBaseInfoAPIManager.photo = photo;
- }
- self.saveResumeBaseInfoAPIManager.realName = self.nameView.contentTextField.text;
- self.saveResumeBaseInfoAPIManager.phone = self.phoneView.contentTextField.text;
- self.saveResumeBaseInfoAPIManager.gender = [self.resumeDataBox.genderDataSource indexOfObject:self.sexView.contentTextField.text];
- self.saveResumeBaseInfoAPIManager.birthYear = self.yearView.contentTextField.text;
- self.saveResumeBaseInfoAPIManager.education = [self.resumeDataBox.educationDataSource indexOfObject:self.educationView.contentTextField.text] + 1;
- self.saveResumeBaseInfoAPIManager.wechatNumber = self.WeChatView.contentTextField.text;
- [self.saveResumeBaseInfoAPIManager start];
- }
- }
- - (void)photoButtonClicked{
-
- [self fb_openImagePickerWithPhotoHandler:^(UIImagePickerController * _Nonnull imagePicker)
- {
- imagePicker.delegate = self;
-
- } cameraHandler:^(UIImagePickerController * _Nonnull imagePicker) {
-
- imagePicker.delegate = self;
-
- } cancelHandler:^{
-
- }];
- }
- /* 性别选择 */
- - (void)sexSelextClicked {
-
- __weak typeof(self) weakSelf = self;
- _pickView = [[ValuePickerView alloc]init];
- _pickView.dataSource = self.resumeDataBox.genderDataSource;
- _pickView.pickerHeight = 256;
- [_pickView reloadPickers];
- [_pickView show];
- _pickView.valueDidSelectWithIndexBlock = ^(NSString *value,NSInteger index){
-
- weakSelf.sexView.contentTextField.text = weakSelf.resumeDataBox.genderDataSource[index];
- };
- }
- /* 出生年份*/
- - (void)yearSelextClicked {
-
- __weak typeof(self) weakSelf = self;
- _pickView = [[ValuePickerView alloc]init];
- _pickView.dataSource = self.yearDataSource;
- _pickView.pickerHeight = 256;
- [_pickView reloadPickers];
- [_pickView show];
- _pickView.valueDidSelectWithIndexBlock = ^(NSString *value,NSInteger index){
-
- weakSelf.yearView.contentTextField.text = weakSelf.yearDataSource[index];
-
- };
- }
- /* 学历选择 */
- - (void)educationSelextClicked {
-
- __weak typeof(self) weakSelf = self;
- _pickView = [[ValuePickerView alloc]init];
- _pickView.dataSource = self.resumeDataBox.educationDataSource;
- _pickView.pickerHeight = 256;
- [_pickView reloadPickers];
- [_pickView show];
- _pickView.valueDidSelectWithIndexBlock = ^(NSString *value,NSInteger index){
-
- weakSelf.educationView.contentTextField.text = weakSelf.resumeDataBox.educationDataSource[index];
-
- };
- }
- #pragma mark - getters and setters
- - (HJResumeDataBox *)resumeDataBox {
-
- if (_resumeDataBox == nil)
- {
- _resumeDataBox = [[HJResumeDataBox alloc] init];
- }
- return _resumeDataBox;
- }
- - (HJSaveBasicInfoAPIManager *)saveResumeBaseInfoAPIManager {
-
- if (_saveResumeBaseInfoAPIManager == nil)
- {
- _saveResumeBaseInfoAPIManager = [[HJSaveBasicInfoAPIManager alloc] init];
- _saveResumeBaseInfoAPIManager.APIManagerDelegate = self;
- }
- return _saveResumeBaseInfoAPIManager;
- }
- - (NSArray *)yearDataSource {
-
- if (_yearDataSource == nil)
- {
- // 生成年份
- NSUInteger startYear = 1950;
- NSUInteger endYear = [[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:[NSDate date]].year + 1;
- NSMutableArray *years = [NSMutableArray arrayWithCapacity:(endYear - startYear)];
- for (NSUInteger y = startYear; y < endYear; y++)
- {
- [years addObject:[NSString stringWithFormat:@"%@", @(y)]];
- }
- _yearDataSource = [years copy];
- }
- return _yearDataSource;
- }
- - (HJLabelTextFieldView *)headerView {
-
- if (_headerView == nil)
- {
- _headerView = [[HJLabelTextFieldView alloc] init];
- _headerView.titleLabel.text = @"头像";
- _headerView.contentTextField.hidden = YES;
- _headerView.contentImageV.hidden = NO;
- _headerView.contentImageV.userInteractionEnabled = YES;
- _headerView.contentImageV.layer.cornerRadius = 25;
- [_headerView.contentImageV sd_setImageWithURL:self.resumeDataBox.resume[kHJResumeKeyPortrait] placeholderImage:[UIImage imageNamed:@"me_portrait_default"]];
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(photoButtonClicked)];
- [_headerView.contentImageV addGestureRecognizer:tap];
- }
- return _headerView;
-
- }
- - (HJLabelTextFieldView *)nameView {
-
- if (_nameView == nil)
- {
- _nameView = [[HJLabelTextFieldView alloc] init];
- _nameView.titleLabel.text = @"姓名";
- _nameView.hiddenRightImageV = YES;
- _nameView.contentTextField.placeholder = @"请输入姓名";
- _nameView.contentTextField.text = self.resumeDataBox.resume[kHJResumeKeyName];
- _nameView.contentTextField.maxLength = 30;
- }
- return _nameView;
- }
- - (HJLabelTextFieldView *)sexView {
-
- if (_sexView == nil)
- {
- _sexView = [[HJLabelTextFieldView alloc] init];
- _sexView.titleLabel.text = @"性别";
- _sexView.contentTextField.text = self.resumeDataBox.resume[kHJResumeKeyGender];
- _sexView.contentTextField.userInteractionEnabled = NO;
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(sexSelextClicked)];
- [_sexView addGestureRecognizer:tap];
- }
- return _sexView;
- }
- - (HJLabelTextFieldView *)phoneView {
-
- if (_phoneView == nil)
- {
- _phoneView = [[HJLabelTextFieldView alloc] init];
- _phoneView.titleLabel.text = @"手机号码";
- _phoneView.hiddenRightImageV = YES;
- _phoneView.contentTextField.placeholder = @"请输入手机号码";
- _phoneView.contentTextField.keyboardType = UIKeyboardTypeNumberPad;
- _phoneView.contentTextField.text = self.resumeDataBox.resume[kHJResumeKeyPhone];
- }
- return _phoneView;
- }
- - (HJLabelTextFieldView *)yearView {
-
- if (_yearView == nil)
- {
- _yearView = [[HJLabelTextFieldView alloc] init];
- _yearView.titleLabel.text = @"出生年份";
- _yearView.contentTextField.userInteractionEnabled = NO;
- _yearView.contentTextField.text = self.resumeDataBox.resume[kHJResumeKeyBirthYear];
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(yearSelextClicked)];
- [_yearView addGestureRecognizer:tap];
- }
- return _yearView;
- }
- - (HJLabelTextFieldView *)educationView {
-
- if (_educationView == nil)
- {
- _educationView = [[HJLabelTextFieldView alloc] init];
- _educationView.titleLabel.text = @"最高学历";
- _educationView.contentTextField.userInteractionEnabled = NO;
- _educationView.contentTextField.text = self.resumeDataBox.resume[kHJResumeKeyEducation];
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(educationSelextClicked)];
- [_educationView addGestureRecognizer:tap];
- }
- return _educationView;
- }
- - (HJLabelTextFieldView *)WeChatView {
-
- if (_WeChatView == nil)
- {
- _WeChatView = [[HJLabelTextFieldView alloc] init];
- _WeChatView.titleLabel.text = @"微信账号";
- _WeChatView.hiddenRightImageV = YES;
- _WeChatView.contentTextField.placeholder = @"请输入微信账号";
- _WeChatView.contentTextField.text = self.resumeDataBox.resume[kHJResumeKeyWechat];
- }
- return _WeChatView;
- }
- - (UIButton *)saveButton {
-
- if (_saveButton == nil)
- {
- _saveButton = [UIButton buttonWithType:UIButtonTypeCustom];
- [_saveButton setTitle:@"保存" forState:UIControlStateNormal];
- _saveButton.titleLabel.font = [UIFont systemFontOfSize:18];
- _saveButton.layer.cornerRadius = 5;
- _saveButton.layer.masksToBounds = YES;
- _saveButton.backgroundColor = COLOR_0177FF;
- [_saveButton addTarget:self action:@selector(saveButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
- }
- return _saveButton;
- }
- - (FBScrollLayoutView *)scrollLayoutView {
-
- if (_scrollLayoutView == nil)
- {
- _scrollLayoutView = [[FBScrollLayoutView alloc] init];
- _scrollLayoutView.delegate = self;
- _scrollLayoutView.backgroundColor = COLOR_F5F5F5;
- _scrollLayoutView.contentView.backgroundColor = COLOR_F5F5F5;
- }
- return _scrollLayoutView;
- }
- @end
|