New file |
| | |
| | | // |
| | | // MOFSPickerManager.m |
| | | // MOFSPickerManager |
| | | // |
| | | // Created by luoyuan on 16/8/26. |
| | | // Copyright © 2016年 luoyuan. All rights reserved. |
| | | // |
| | | |
| | | #import "MOFSPickerManager.h" |
| | | |
| | | @implementation MOFSPickerManager |
| | | |
| | | + (MOFSPickerManager *)shareManger { |
| | | static MOFSPickerManager *manager = nil; |
| | | static dispatch_once_t onceToken; |
| | | dispatch_once(&onceToken, ^{ |
| | | manager = [self new]; |
| | | }); |
| | | return manager; |
| | | } |
| | | |
| | | - (MOFSDatePicker *)datePicker { |
| | | if (!_datePicker) { |
| | | _datePicker = [MOFSDatePicker new]; |
| | | } |
| | | return _datePicker; |
| | | } |
| | | |
| | | - (MOFSPickerView *)pickView { |
| | | if (!_pickView) { |
| | | _pickView = [MOFSPickerView new]; |
| | | } |
| | | return _pickView; |
| | | } |
| | | |
| | | - (MOFSAddressPickerView *)addressPicker { |
| | | if (!_addressPicker) { |
| | | _addressPicker = [MOFSAddressPickerView new]; |
| | | } |
| | | return _addressPicker; |
| | | } |
| | | |
| | | // ================================DatePicker===================================// |
| | | |
| | | - (void)showDatePickerWithTag:(NSInteger)tag commitBlock:(DatePickerCommitBlock)commitBlock cancelBlock:(DatePickerCancelBlock)cancelBlock { |
| | | self.datePicker.datePickerMode = UIDatePickerModeDate; |
| | | |
| | | self.datePicker.toolBar.cancelBarTitle = @"取消"; |
| | | self.datePicker.toolBar.commitBarTitle = @"确定"; |
| | | |
| | | self.datePicker.minimumDate = nil; |
| | | self.datePicker.maximumDate = nil; |
| | | [self.datePicker showMOFSDatePickerViewWithTag:tag firstDate:nil commit:^(NSDate *date) { |
| | | if (commitBlock) { |
| | | commitBlock(date); |
| | | } |
| | | } cancel:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | - (void)showDatePickerWithTag:(NSInteger)tag datePickerMode:(UIDatePickerMode)mode commitBlock:(DatePickerCommitBlock)commitBlock cancelBlock:(DatePickerCancelBlock)cancelBlock { |
| | | self.datePicker.datePickerMode = mode; |
| | | |
| | | self.datePicker.toolBar.cancelBarTitle = @"取消"; |
| | | self.datePicker.toolBar.commitBarTitle = @"确定"; |
| | | |
| | | self.datePicker.minimumDate = nil; |
| | | self.datePicker.maximumDate = nil; |
| | | [self.datePicker showMOFSDatePickerViewWithTag:tag firstDate:nil commit:^(NSDate *date) { |
| | | if (commitBlock) { |
| | | commitBlock(date); |
| | | } |
| | | } cancel:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | - (void)showDatePickerWithTag:(NSInteger)tag title:(NSString *)title cancelTitle:(NSString *)cancelTitle commitTitle:(NSString *)commitTitle datePickerMode:(UIDatePickerMode)mode commitBlock:(DatePickerCommitBlock)commitBlock cancelBlock:(DatePickerCancelBlock)cancelBlock { |
| | | self.datePicker.datePickerMode = mode; |
| | | |
| | | self.datePicker.toolBar.titleBarTitle = title; |
| | | self.datePicker.toolBar.cancelBarTitle = cancelTitle; |
| | | self.datePicker.toolBar.commitBarTitle = commitTitle; |
| | | |
| | | self.datePicker.minimumDate = nil; |
| | | self.datePicker.maximumDate = nil; |
| | | [self.datePicker showMOFSDatePickerViewWithTag:tag firstDate:nil commit:^(NSDate *date) { |
| | | if (commitBlock) { |
| | | commitBlock(date); |
| | | } |
| | | } cancel:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | - (void)showDatePickerWithTag:(NSInteger)tag firstDate:(NSDate *)firstDate minDate:(NSDate *)minDate maxDate:(NSDate *)maxDate datePickerMode:(UIDatePickerMode)mode commitBlock:(DatePickerCommitBlock)commitBlock cancelBlock:(DatePickerCancelBlock)cancelBlock { |
| | | self.datePicker.datePickerMode = mode; |
| | | |
| | | self.datePicker.toolBar.cancelBarTitle = @"取消"; |
| | | self.datePicker.toolBar.commitBarTitle = @"确定"; |
| | | |
| | | self.datePicker.minimumDate = minDate; |
| | | self.datePicker.maximumDate = maxDate; |
| | | |
| | | [self.datePicker showMOFSDatePickerViewWithTag:tag firstDate:firstDate commit:^(NSDate *date) { |
| | | if (commitBlock) { |
| | | commitBlock(date); |
| | | } |
| | | } cancel:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | |
| | | - (void)showDatePickerWithTitle:(NSString *)title cancelTitle:(NSString *)cancelTitle commitTitle:(NSString *)commitTitle firstDate:(NSDate *)firstDate minDate:(NSDate *)minDate maxDate:(NSDate *)maxDate datePickerMode:(UIDatePickerMode)mode tag:(NSInteger)tag commitBlock:(DatePickerCommitBlock)commitBlock cancelBlock:(DatePickerCancelBlock)cancelBlock { |
| | | self.datePicker.datePickerMode = mode; |
| | | |
| | | self.datePicker.toolBar.titleBarTitle = title; |
| | | self.datePicker.toolBar.cancelBarTitle = cancelTitle; |
| | | self.datePicker.toolBar.commitBarTitle = commitTitle; |
| | | |
| | | self.datePicker.minimumDate = minDate; |
| | | self.datePicker.maximumDate = maxDate; |
| | | |
| | | [self.datePicker showMOFSDatePickerViewWithTag:tag firstDate:firstDate commit:^(NSDate *date) { |
| | | if (commitBlock) { |
| | | commitBlock(date); |
| | | } |
| | | } cancel:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | // ================================pickerView===================================// |
| | | |
| | | - (void)showPickerViewWithDataArray:(NSArray<NSString *> *)array tag:(NSInteger)tag title:(NSString *)title cancelTitle:(NSString *)cancelTitle commitTitle:(NSString *)commitTitle commitBlock:(PickerViewCommitBlock)commitBlock cancelBlock:(PickerViewCancelBlock)cancelBlock { |
| | | |
| | | self.pickView.showTag = tag; |
| | | self.pickView.toolBar.titleBarTitle = title; |
| | | self.pickView.toolBar.cancelBarTitle = cancelTitle; |
| | | self.pickView.toolBar.commitBarTitle = commitTitle; |
| | | [self.pickView showMOFSPickerViewWithDataArray:array commitBlock:^(NSString *string) { |
| | | if (commitBlock) { |
| | | commitBlock(string); |
| | | } |
| | | } cancelBlock:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | |
| | | } |
| | | |
| | | - (void)showPickerViewWithCustomDataArray:(NSArray *)array keyMapper:(NSString *)keyMapper tag:(NSInteger)tag title:(NSString *)title cancelTitle:(NSString *)cancelTitle commitTitle:(NSString *)commitTitle commitBlock:(PickerViewCustomCommitBlock)commitBlock cancelBlock:(PickerViewCancelBlock)cancelBlock { |
| | | self.pickView.showTag = tag; |
| | | self.pickView.toolBar.titleBarTitle = title; |
| | | self.pickView.toolBar.cancelBarTitle = cancelTitle; |
| | | self.pickView.toolBar.commitBarTitle = commitTitle; |
| | | [self.pickView showMOFSPickerViewWithCustomDataArray:array keyMapper:keyMapper commitBlock:^(id model) { |
| | | if (commitBlock) { |
| | | commitBlock(model); |
| | | } |
| | | } cancelBlock:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | //===============================addressPicker===================================// |
| | | |
| | | - (void)showMOFSAddressPickerWithTitle:(NSString *)title cancelTitle:(NSString *)cancelTitle commitTitle:(NSString *)commitTitle commitBlock:(void(^)(NSString *address, NSString *zipcode))commitBlock cancelBlock:(void(^)(void))cancelBlock { |
| | | self.addressPicker.toolBar.titleBarTitle = title; |
| | | self.addressPicker.toolBar.cancelBarTitle = cancelTitle; |
| | | self.addressPicker.toolBar.commitBarTitle = commitTitle; |
| | | [self.addressPicker showMOFSAddressPickerCommitBlock:^(NSString *address, NSString *zipcode) { |
| | | if (commitBlock) { |
| | | commitBlock(address, zipcode); |
| | | } |
| | | } cancelBlock:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | - (void)showMOFSAddressPickerWithDefaultAddress:(NSString *)address title:(NSString *)title cancelTitle:(NSString *)cancelTitle commitTitle:(NSString *)commitTitle commitBlock:(void(^)(NSString *address, NSString *zipcode))commitBlock cancelBlock:(void(^)(void))cancelBlock { |
| | | self.addressPicker.toolBar.titleBarTitle = title; |
| | | self.addressPicker.toolBar.cancelBarTitle = cancelTitle; |
| | | self.addressPicker.toolBar.commitBarTitle = commitTitle; |
| | | |
| | | [self.addressPicker showMOFSAddressPickerCommitBlock:^(NSString *address, NSString *zipcode) { |
| | | if (commitBlock) { |
| | | commitBlock(address, zipcode); |
| | | } |
| | | } cancelBlock:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | |
| | | if (address == nil || [address isEqualToString:@""]) { |
| | | return; |
| | | } |
| | | |
| | | [self searchIndexByAddress:address block:^(NSString *address) { |
| | | BOOL flag = [address rangeOfString:@"error"].location == NSNotFound; |
| | | if (flag) { |
| | | NSArray *indexArr = [address componentsSeparatedByString:@"-"]; |
| | | for (int i = 0; i < indexArr.count; i++) { |
| | | @try { |
| | | dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ |
| | | [self.addressPicker selectRow:[indexArr[i] integerValue] inComponent:i animated:NO]; |
| | | }); |
| | | } @catch (NSException *exception) { |
| | | |
| | | } @finally { |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | }]; |
| | | |
| | | } |
| | | |
| | | - (void)showMOFSAddressPickerWithDefaultZipcode:(NSString *)zipcode title:(NSString *)title cancelTitle:(NSString *)cancelTitle commitTitle:(NSString *)commitTitle commitBlock:(void (^)(NSString *, NSString *))commitBlock cancelBlock:(void (^)(void))cancelBlock { |
| | | self.addressPicker.toolBar.titleBarTitle = title; |
| | | self.addressPicker.toolBar.cancelBarTitle = cancelTitle; |
| | | self.addressPicker.toolBar.commitBarTitle = commitTitle; |
| | | |
| | | [self.addressPicker showMOFSAddressPickerCommitBlock:^(NSString *address, NSString *zipcode) { |
| | | if (commitBlock) { |
| | | commitBlock(address, zipcode); |
| | | } |
| | | } cancelBlock:^{ |
| | | if (cancelBlock) { |
| | | cancelBlock(); |
| | | } |
| | | }]; |
| | | |
| | | if (zipcode == nil || [zipcode isEqual: @""]) { |
| | | return; |
| | | } |
| | | |
| | | [self searchIndexByZipCode:zipcode block:^(NSString *address) { |
| | | BOOL flag = [address rangeOfString:@"error"].location == NSNotFound; |
| | | if (flag) { |
| | | NSArray *indexArr = [address componentsSeparatedByString:@"-"]; |
| | | for (int i = 0; i < indexArr.count; i++) { |
| | | @try { |
| | | dispatch_async(dispatch_get_main_queue(), ^{ |
| | | [self.addressPicker selectRow:[indexArr[i] integerValue] inComponent:i animated:NO]; |
| | | }); |
| | | } @catch (NSException *exception) { |
| | | |
| | | } @finally { |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | }]; |
| | | |
| | | } |
| | | |
| | | - (void)searchAddressByZipcode:(NSString *)zipcode block:(void(^)(NSString *address))block { |
| | | [self.addressPicker searchType:SearchTypeAddress key:zipcode block:^(NSString *result) { |
| | | if (block) { |
| | | block(result); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | - (void)searchZipCodeByAddress:(NSString *)address block:(void(^)(NSString *zipcode))block { |
| | | [self.addressPicker searchType:SearchTypeZipcode key:address block:^(NSString *result) { |
| | | if (block) { |
| | | block(result); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | - (void)searchIndexByAddress:(NSString *)address block:(void(^)(NSString *address))block { |
| | | [self.addressPicker searchType:SearchTypeAddressIndex key:address block:^(NSString *result) { |
| | | if (block) { |
| | | block(result); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | - (void)searchIndexByZipCode:(NSString *)zipcode block:(void (^)(NSString *))block { |
| | | [self.addressPicker searchType:SearchTypeZipcodeIndex key:zipcode block:^(NSString *result) { |
| | | if (block) { |
| | | block(result); |
| | | } |
| | | }]; |
| | | } |
| | | |
| | | @end |