You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
367 lines
14 KiB
367 lines
14 KiB
// |
|
// WhiteContactViewController.m |
|
// tongxin |
|
// |
|
// Created by ecell on 2021/10/19. |
|
// Copyright © 2021 xTT. All rights reserved. |
|
// |
|
|
|
#import "WhiteContactViewController.h" |
|
#import "WhiteContactModel.h" |
|
#import "WhiteContactTableViewCell.h" |
|
#import "AddWhiteContactViewController.h" |
|
#import "AppDelegate.h" |
|
|
|
@interface WhiteContactViewController () |
|
|
|
@property (nonatomic,strong) UIView * vbottom; |
|
@property (nonatomic,strong) UIButton *leftBtn; |
|
@property (nonatomic,strong) UIButton *rightBtn; |
|
@property (nonatomic,strong) UIBarButtonItem *rightBarButton; |
|
@property (nonatomic,strong) WhiteContactModel *model; |
|
/// 删除模式 |
|
@property (nonatomic ,assign) BOOL isDeletMode; |
|
|
|
|
|
@property (nonatomic ,strong) NSMutableArray *selectArr; |
|
|
|
@end |
|
|
|
@implementation WhiteContactViewController |
|
|
|
|
|
- (void)viewDidLoad { |
|
[super viewDidLoad]; |
|
self.isDeletMode = NO; |
|
[self setTitle:@"通讯录"]; |
|
CGRect newFrame = self.myTableView.frame; |
|
newFrame.size.height = newFrame.size.height - 45 - 22; |
|
self.myTableView.frame = newFrame; |
|
self.view.backgroundColor = self.myTableView.backgroundColor; |
|
[self.myTableView registerNib:[UINib nibWithNibName:@"WhiteContactTableViewCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"WhiteContactTableViewCellID"]; |
|
self.myTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; |
|
[self.view addSubview:self.myTableView]; |
|
|
|
self.model = [[WhiteContactModel alloc] init]; |
|
} |
|
|
|
- (void)viewWillAppear:(BOOL)animated { |
|
[super viewWillAppear:animated]; |
|
[self setUI]; |
|
[self loadDataFromServer]; |
|
} |
|
|
|
-(void)loadDataFromServer{ |
|
WEAKSELF |
|
[self.model query:^(NSMutableArray *arr) { |
|
[weakSelf.myDataSource removeAllObjects]; |
|
[weakSelf.myDataSource addObject:arr]; |
|
if (weakSelf.myDataSource.count <= 0) |
|
{ |
|
weakSelf.rightBtn.hidden = YES; |
|
self.isDeletMode = NO; |
|
[self.myTableView reloadData]; |
|
[self.selectArr removeAllObjects]; |
|
[weakSelf.leftBtn setTitle:@"添加" forState:UIControlStateNormal]; |
|
weakSelf.leftBtn.frame = CGRectMake(14, 1, (ScreenWidth-28), 44); |
|
} |
|
[weakSelf.myTableView reloadData]; |
|
} failure:^(NSError *error) { |
|
if (!error) { |
|
} |
|
}]; |
|
} |
|
|
|
-(void)setUI{ |
|
if(_vbottom){ |
|
[_vbottom removeFromSuperview]; |
|
_vbottom = nil; |
|
} |
|
|
|
CGFloat tempHeight = 45+11; |
|
if(ScreenHeight >= 812){ |
|
tempHeight = 45+11+15; |
|
} |
|
_vbottom = [[UIView alloc] initWithFrame:CGRectMake(0, ScreenHeight-getRectNavAndStatusHight-tempHeight, ScreenWidth, tempHeight)]; |
|
|
|
_leftBtn = [UIButton buttonWithType:UIButtonTypeCustom]; |
|
[_leftBtn setTitle:@"添加" forState:UIControlStateNormal]; |
|
[_leftBtn.layer setCornerRadius:3]; |
|
[_leftBtn.layer setMasksToBounds:YES]; |
|
[_leftBtn setBackgroundColor:mainColor]; |
|
[_leftBtn setTitleColor:[UIColor whiteColor] forState:0]; |
|
[_leftBtn.titleLabel setFont:[UIFont systemFontOfSize:15]]; |
|
|
|
_leftBtn.frame = CGRectMake(14, 1, (ScreenWidth-28), 44); |
|
[_vbottom addSubview:_leftBtn]; |
|
[self.view addSubview:_vbottom]; |
|
[self.view bringSubviewToFront:_vbottom]; //置顶 |
|
[_leftBtn addTarget:self action:@selector(leftBtnAction:) forControlEvents:UIControlEventTouchUpInside]; |
|
|
|
|
|
|
|
_rightBtn = [UIButton buttonWithType:UIButtonTypeCustom]; |
|
[_rightBtn setTitle:@"删除" forState:UIControlStateNormal]; |
|
[_rightBtn.layer setCornerRadius:3]; |
|
[_rightBtn.layer setMasksToBounds:YES]; |
|
[_rightBtn setBackgroundColor:mainColor]; |
|
[_rightBtn setTitleColor:[UIColor whiteColor] forState:0]; |
|
[_rightBtn.titleLabel setFont:[UIFont systemFontOfSize:15]]; |
|
_rightBtn.hidden = YES; |
|
_rightBtn.frame = CGRectMake(ScreenWidth/2+6, 1, (ScreenWidth-40)/2, 44); |
|
[_vbottom addSubview:_rightBtn]; |
|
[_rightBtn addTarget:self action:@selector(deleteBtnAction:) forControlEvents:UIControlEventTouchUpInside]; |
|
} |
|
|
|
|
|
|
|
-(void)leftBtnAction:(UIButton*)sender { |
|
WEAKSELF |
|
|
|
if ([sender.currentTitle isEqualToString:@"取消选择"]) |
|
{ |
|
_rightBtn.hidden = YES; |
|
self.isDeletMode = NO; |
|
[self.myTableView reloadData]; |
|
[self.selectArr removeAllObjects]; |
|
[_leftBtn setTitle:@"添加" forState:UIControlStateNormal]; |
|
_leftBtn.frame = CGRectMake(14, 1, (ScreenWidth-28), 44); |
|
} |
|
else |
|
{ |
|
AddWhiteContactViewController *vc = [AddWhiteContactViewController new]; |
|
vc.view.backgroundColor = [UIColor whiteColor]; |
|
NSLog(@"%@",self.myDataSource); |
|
vc.modelArr = self.myDataSource[0]; |
|
[self.navigationController pushViewController:vc animated:YES]; |
|
|
|
// UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"添加通讯录" message:nil preferredStyle:UIAlertControllerStyleAlert]; |
|
// //增加取消按钮; |
|
// [alertController addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:nil]]; |
|
// //增加确定按钮; |
|
// [alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { |
|
// //获取第1个输入框; |
|
// UITextField *userNameTextField = alertController.textFields.firstObject; |
|
// //获取第2个输入框; |
|
// UITextField *phoneNumberTextField = alertController.textFields.lastObject; |
|
// |
|
// [weakSelf addWhiteContactToServer:userNameTextField.text phoneNumber:phoneNumberTextField.text]; |
|
// |
|
// }]]; |
|
// //定义第一个输入框; |
|
// [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { |
|
// textField.placeholder = @"请输入昵称"; |
|
// }]; |
|
// //定义第二个输入框; |
|
// [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { |
|
// textField.keyboardType = UIKeyboardTypePhonePad; |
|
// textField.placeholder = @"请输入手机号码"; |
|
// }]; |
|
// |
|
// [self presentViewController:alertController animated:true completion:nil]; |
|
} |
|
} |
|
|
|
|
|
-(void)addWhiteContactToServer:(NSString *)name phoneNumber:(NSString *)phone { |
|
//WEAKSELF |
|
if (!name || name.length<=0) { |
|
[UICommon MessageErrorText:@"昵称不能为空"]; |
|
return; |
|
} |
|
|
|
if (!phone || ![self isPhone:phone]) { |
|
[UICommon MessageErrorText:@"请输入正确的手机号码"]; |
|
return; |
|
} |
|
|
|
// self.model.imei = cUser.cDevice.imei; |
|
// self.model.name = name; |
|
// self.model.phone = phone; |
|
// |
|
// [self.model save:_model success:^{ |
|
// [weakSelf loadDataFromServer]; |
|
// } failure:^(NSError *error) { |
|
// |
|
// }]; |
|
// |
|
// NSLog(@"昵称 = %@,手机号码 = %@",name,phone); |
|
} |
|
|
|
|
|
-(BOOL)isPhone:(NSString*)phone { |
|
NSString * regex = @"^1([3-9])\\d{9}$"; |
|
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; |
|
return [predicate evaluateWithObject:phone]; |
|
} |
|
|
|
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ |
|
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, Adapted(62))]; |
|
view.backgroundColor = RGB(248, 248, 254); |
|
UILabel * titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(14, 0, ScreenWidth-28, Adapted(62))]; |
|
titleLabel.font = [UIFont systemFontOfSize:12]; |
|
titleLabel.textColor = RGB(102, 102, 102); |
|
titleLabel.lineBreakMode = NSLineBreakByWordWrapping; |
|
titleLabel.numberOfLines = 0; |
|
[view addSubview:titleLabel]; |
|
NSInteger tempCount = [self.myDataSource[section] count]; |
|
if (cUser.cDevice.support_hht.integerValue == 1) |
|
titleLabel.attributedText = [self labelFontSize:[NSString stringWithFormat:@"温馨提示:\n为保护儿童通话安全,仅限设置的五组亲情号码之间进行通话,套餐余量不足时,仅支持接听;号码每月只能删除一次,一次限定两个号码。\n长按可删除白名单"]]; |
|
else |
|
titleLabel.text = [NSString stringWithFormat:@"温馨提示:\n通讯录最多设置5个号码,设置之后将同步到设备\n通讯录(%zd人)",tempCount]; |
|
return view; |
|
} |
|
|
|
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ |
|
NSInteger tempCount = [self.myDataSource[section] count]; |
|
if (section == 1){ |
|
if(tempCount == 0){ |
|
return 0.01; |
|
} |
|
} |
|
return Adapted(62); |
|
} |
|
|
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ |
|
WhiteContactModel *model = self.myDataSource[indexPath.section][indexPath.row]; |
|
WhiteContactTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WhiteContactTableViewCellID" forIndexPath:indexPath]; |
|
cell.name.text = model.name; |
|
cell.phone.text = model.phone; |
|
cell.isDeletMode = self.isDeletMode; |
|
cell.selectImg.image = model.isSelect ? [UIImage imageNamed:@"icon_selectImg_Yes"] : [UIImage imageNamed:@"icon_selectImg_No"]; |
|
cell.selectionStyle = UITableViewCellSelectionStyleNone; |
|
UILongPressGestureRecognizer * longPressGesture =[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(cellLongPress:)]; |
|
longPressGesture.minimumPressDuration = 0.8;//设置长按 时间 |
|
[cell addGestureRecognizer:longPressGesture]; |
|
return cell; |
|
} |
|
|
|
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView |
|
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ |
|
return UITableViewCellEditingStyleNone; |
|
} |
|
|
|
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ |
|
return 80; |
|
} |
|
|
|
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath |
|
{ |
|
WhiteContactModel *model = self.myDataSource[indexPath.section][indexPath.row]; |
|
if(self.isDeletMode) |
|
{ |
|
model.isSelect = !model.isSelect; |
|
if (model.isSelect) |
|
{ |
|
NSLog(@"选中%@",model.name); |
|
[self.selectArr addObject:model]; |
|
} |
|
else |
|
{ |
|
NSLog(@"取消选中%@",model.name); |
|
[self.selectArr removeObject:model]; |
|
} |
|
if (self.selectArr.count > 2) |
|
{ |
|
model.isSelect = NO; |
|
[self.selectArr removeObject:model]; |
|
[UICommon MessageErrorText:@"一次最多只能删2个白名单"]; |
|
return; |
|
} |
|
[self.myTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; |
|
|
|
|
|
} |
|
} |
|
|
|
-(void)cellLongPress:(UILongPressGestureRecognizer *)longRecognizer |
|
{ |
|
if (cUser.cDevice.support_hht.integerValue == 1) |
|
{ |
|
if (longRecognizer.state==UIGestureRecognizerStateBegan) |
|
{ |
|
self.isDeletMode = YES; |
|
[self loadDataFromServer]; |
|
[self.myTableView reloadData]; |
|
|
|
_leftBtn.frame = CGRectMake(14, 1, (ScreenWidth-40)/2, 44); |
|
[_leftBtn setTitle:@"取消选择" forState:0]; |
|
_rightBtn.hidden = NO; |
|
// //成为第一响应者,需重写该方法 |
|
// [self becomeFirstResponder]; |
|
// CGPoint location = [longRecognizer locationInView:self.myTableView]; |
|
// NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:location]; |
|
// //可以得到此时你点击的哪一行 |
|
// |
|
// //在此添加你想要完成的功能 |
|
// NSLog(@"---%ld",indexPath.row); |
|
// WhiteContactModel *model = self.myDataSource[indexPath.section][indexPath.row]; |
|
// LGAlertView *alertViews = [[LGAlertView alloc] initWithTitle:@"删除白名单" message:[NSString stringWithFormat:@"您确定删除[%@]白名单吗?",model.name] style:LGAlertViewStyleAlert buttonTitles:@[@"确定"] cancelButtonTitle:@"取消" destructiveButtonTitle:nil actionHandler:^(LGAlertView *alertView, NSString *title, NSUInteger index) { |
|
// [alertView dismissAnimated:NO completionHandler:nil]; |
|
// [self deletemm:model]; |
|
// |
|
// } cancelHandler:nil destructiveHandler:nil]; |
|
// alertViews.cancelOnTouch = NO; |
|
// [alertViews showAnimated:YES completionHandler:nil]; |
|
} |
|
} |
|
} |
|
|
|
-(void)deleteBtnAction:(UIButton*)sender |
|
{ |
|
AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate; |
|
if (!app.isTouch) |
|
{ |
|
[UICommon MessageErrorText:@"操作频繁,操作间隔时间为1分钟"]; |
|
return; |
|
} |
|
WEAKSELF |
|
if (self.selectArr.count <= 0) |
|
{ |
|
[UICommon MessageErrorText:@"请选择联系人"]; |
|
return; |
|
} |
|
[UICommon MessageUpload:@"正在删除"]; |
|
[self.model deleteModel:self.selectArr success:^{ |
|
[UICommon HidenLoading]; |
|
[UICommon MessageSuccessText:@"删除成功" isImg:YES]; |
|
[app stajishiqi]; |
|
[weakSelf loadDataFromServer]; |
|
} failure:^(NSError *error) { |
|
NSDictionary *dic = error.userInfo; |
|
[UICommon MessageErrorText:dic[@"msg"]]; |
|
[app stajishiqi]; |
|
}]; |
|
} |
|
|
|
- (NSMutableArray *)selectArr |
|
{ |
|
if (!_selectArr) _selectArr = [NSMutableArray new]; |
|
return _selectArr; |
|
} |
|
|
|
#pragma mark 实现成为第一响应者方法 |
|
-(BOOL)canBecomeFirstResponder |
|
{ |
|
return YES; |
|
} |
|
|
|
/// 指定字符大小 |
|
/// @param text 内容 |
|
- (NSAttributedString *)labelFontSize:(NSString *)text |
|
{ |
|
NSRange symbolRange = [text rangeOfString:@"长按可删除白名单"]; |
|
|
|
|
|
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:text]; |
|
if (symbolRange.location != NSNotFound) { |
|
// [string addAttribute:NSFontAttributeName value:FontADA_(13) range:NSMakeRange(symbolRange.location, symbolRange.length)]; |
|
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(symbolRange.location, symbolRange.length)]; |
|
} |
|
|
|
|
|
return string; |
|
} |
|
|
|
|
|
@end
|
|
|