PasteSelectView.m 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. //
  2. // PasteSelectView.m
  3. // VclustersGemini
  4. //
  5. // Created by APPLE on 2019/7/5.
  6. // Copyright © 2019 APPLE. All rights reserved.
  7. //
  8. #import "PasteSelectView.h"
  9. #define TAG_PASED_BASE 12345
  10. @interface PasteSelectView ()<UITableViewDelegate,UITableViewDataSource>{
  11. NSMutableArray *pasteDataAry;
  12. UIView *bgView;
  13. UILabel *tipsLabel;
  14. UIImageView *noCententImageView;
  15. UILabel *noCententLabel;
  16. UIButton *clearBtn;
  17. }
  18. @property (nonatomic, strong, nullable) UITableView *tableView;
  19. @end
  20. @implementation PasteSelectView
  21. @synthesize delegate;
  22. - (UITableView *)tableView{
  23. if (!_tableView) {
  24. _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 304.f, SCREEN_H) style:UITableViewStylePlain];
  25. _tableView.delegate = self;
  26. _tableView.dataSource = self;
  27. _tableView.showsVerticalScrollIndicator = YES;
  28. _tableView.showsHorizontalScrollIndicator = NO;
  29. [_tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
  30. [_tableView setBackgroundColor:[UIColor clearColor]];
  31. [_tableView setTableFooterView:[UIView new]];
  32. }
  33. return _tableView;
  34. }
  35. - (id)initWithFrame:(CGRect)frame{
  36. self = [super initWithFrame:frame];
  37. if (self){
  38. [self setBackgroundColor:[UIColor clearColor]];
  39. [self initData];
  40. [self drawView:frame];
  41. }
  42. return self;
  43. }
  44. - (void)initData{
  45. UIPasteboard* pasteboard = [UIPasteboard generalPasteboard];
  46. NSString *str = [pasteboard string];
  47. HLog(@"__________%s______%@____",__func__,str);
  48. if ([str rangeOfString:@"CVLUSTERS_NOUSE_"].location != NSNotFound){
  49. str = nil;
  50. }
  51. NSString* curSn = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
  52. pasteDataAry = [HWDataManager getObjectWithKey:curSn];
  53. if (str){
  54. if (pasteDataAry){
  55. if (![pasteDataAry containsObject:str]){
  56. if ([pasteDataAry count] == 10){
  57. [pasteDataAry removeObjectAtIndex:9];
  58. }
  59. [pasteDataAry insertObject:str atIndex:0];
  60. }
  61. }else{
  62. pasteDataAry = [[NSMutableArray alloc] init];
  63. [pasteDataAry addObject:str];
  64. }
  65. [HWDataManager setObjectWithKey:curSn value:pasteDataAry];
  66. }
  67. }
  68. - (void)drawView:(CGRect)frame{
  69. [self setBackgroundColor:[UIColor clearColor]];
  70. CGFloat w_left_right = 57.f;
  71. // if (w_left_right > 67.f/2.f)
  72. // {
  73. // w_left_right = 67.f/2.f;
  74. // }
  75. if(SCREEN_W > SCREEN_H){
  76. w_left_right = SCREEN_W/5.0;
  77. }
  78. CGFloat h_bg = 272.f;
  79. UIImage *demoPhoneBtnImage = [UIImage imageNamed:@"jianqieban_guanbi_icon"];
  80. bgView = [[UIView alloc] init];
  81. [bgView setBackgroundColor:RGBACOLOR(0 , 0, 0, 0.6)];
  82. [bgView.layer setCornerRadius:20.f];
  83. bgView.clipsToBounds = YES;
  84. [self addSubview:bgView];
  85. [bgView mas_makeConstraints:^(MASConstraintMaker *make) {
  86. make.left.mas_equalTo(w_left_right);
  87. make.right.mas_equalTo(-w_left_right);
  88. make.height.mas_equalTo(h_bg);
  89. make.centerY.equalTo(self.mas_centerY).offset(-(demoPhoneBtnImage.size.height + 30.f/2.f)/2.f);
  90. }];
  91. CGFloat w_left_right_btn = 30.f/2.f;
  92. /*删除按钮*/
  93. UIButton *demoPhoneBtn = [[UIButton alloc] init];
  94. [demoPhoneBtn setBackgroundColor:[UIColor clearColor]];
  95. [demoPhoneBtn addTarget:self
  96. action:@selector(removeFromSuperview)
  97. forControlEvents:(UIControlEventTouchUpInside)];
  98. [demoPhoneBtn setImage:demoPhoneBtnImage forState:(UIControlStateNormal)];
  99. [self addSubview:demoPhoneBtn];
  100. [demoPhoneBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  101. make.centerX.equalTo(self->bgView.mas_centerX);
  102. make.width.mas_equalTo(demoPhoneBtnImage.size.width);
  103. make.height.mas_equalTo(demoPhoneBtnImage.size.height);
  104. make.top.equalTo(self->bgView.mas_bottom).offset(30.f/2.f);
  105. }];
  106. /*上方文字*/
  107. tipsLabel = [[UILabel alloc] init];
  108. [tipsLabel setBackgroundColor:[UIColor clearColor]];
  109. [tipsLabel setTextColor:[UIColor whiteColor]];
  110. [tipsLabel setFont:[UIFont systemFontOfSize:18.f]];
  111. [tipsLabel setTextAlignment:(NSTextAlignmentCenter)];
  112. NSInteger numStr = 0;
  113. if (pasteDataAry){
  114. numStr = [pasteDataAry count];
  115. }
  116. [tipsLabel setText:@"剪贴板"];
  117. [bgView addSubview:tipsLabel];
  118. [tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  119. make.left.mas_equalTo(w_left_right_btn);
  120. make.right.mas_equalTo(-w_left_right_btn);
  121. make.height.mas_equalTo(21.f);
  122. make.top.mas_equalTo(15);
  123. }];
  124. /*清空按钮*/
  125. clearBtn = [[UIButton alloc] init];
  126. [clearBtn setBackgroundColor:COLOR_ENABLE_BTN];
  127. [clearBtn setTitle:@"清空" forState:(UIControlStateNormal)];
  128. [clearBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
  129. [clearBtn.titleLabel setFont:[UIFont systemFontOfSize:12.f]];
  130. [clearBtn addTarget:self action:@selector(clearPasteInfo) forControlEvents:(UIControlEventTouchUpInside)];
  131. [clearBtn.layer setCornerRadius:4];
  132. [bgView addSubview:clearBtn];
  133. CGFloat w_clearBtn = 36.f;
  134. CGFloat h_clearBtn = 19.f;
  135. [clearBtn mas_makeConstraints:^(MASConstraintMaker *make){
  136. make.right.mas_equalTo(-w_left_right_btn);
  137. make.width.mas_equalTo(w_clearBtn);
  138. make.height.mas_equalTo(h_clearBtn);
  139. make.centerY.equalTo(tipsLabel.mas_centerY);
  140. }];
  141. noCententImageView = [[UIImageView alloc] init];
  142. [noCententImageView setBackgroundColor:[UIColor clearColor]];
  143. UIImage *noCententImage = [UIImage imageNamed:@"jianqiebankong_icon"];
  144. [bgView addSubview:noCententImageView];
  145. [noCententImageView mas_makeConstraints:^(MASConstraintMaker *make) {
  146. make.centerX.equalTo(self->bgView.mas_centerX);
  147. make.width.mas_equalTo(noCententImage.size.width);
  148. make.height.mas_equalTo(noCententImage.size.height);
  149. make.top.mas_equalTo(40.f);
  150. }];
  151. [noCententImageView setImage:noCententImage];
  152. [noCententImageView setHidden:YES];
  153. noCententLabel = [[UILabel alloc] init];
  154. [noCententLabel setBackgroundColor:[UIColor clearColor]];
  155. [noCententLabel setTextAlignment:(NSTextAlignmentCenter)];
  156. [noCententLabel setText:@"剪贴板为空"];
  157. [noCententLabel setFont:[UIFont systemFontOfSize:15.f]];
  158. [noCententLabel setTextColor:[UIColor whiteColor]];
  159. [bgView addSubview:noCententLabel];
  160. [noCententLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  161. make.height.mas_equalTo(20.f);
  162. make.left.mas_equalTo(0);
  163. make.right.mas_equalTo(0);
  164. make.top.equalTo(noCententImageView.mas_bottom).offset(10.f);
  165. }];
  166. [noCententLabel setHidden:YES];
  167. /*添加列表*/
  168. [bgView addSubview:self.tableView];
  169. [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
  170. make.top.equalTo(tipsLabel.mas_bottom).offset(10.f);
  171. make.left.mas_equalTo(0);
  172. make.right.mas_equalTo(-10);
  173. make.bottom.mas_equalTo(-10);
  174. }];
  175. if (pasteDataAry && [pasteDataAry count] > 0){
  176. [self haveCentent:YES];
  177. [tipsLabel setHidden:NO];
  178. }else{
  179. [self haveCentent:NO];
  180. [tipsLabel setHidden:YES];
  181. }
  182. }
  183. - (void)clearPasteInfo{
  184. [self setHidden:YES];
  185. UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil
  186. message:@""
  187. preferredStyle:UIAlertControllerStyleAlert];
  188. NSString *tipsStr = @"确定清空剪贴板?";
  189. NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:tipsStr attributes:@{NSFontAttributeName: [UIFont systemFontOfSize: 15], NSForegroundColorAttributeName: HW333333Color}];
  190. [alertController setValue:string forKey:@"_attributedMessage"];
  191. UIView *subView1 = alertController.view.subviews[0];
  192. if (subView1 && [subView1 subviews]){
  193. UIView *subView2 = subView1.subviews[0];
  194. if (subView2 && [subView2 subviews]){
  195. UIView *subView3 = subView2.subviews[0];
  196. if (subView3 && [subView3 subviews]){
  197. UIView *subView4 = subView3.subviews[0];
  198. if (subView4 && [subView4 subviews]){
  199. UIView *subView5 = subView4.subviews[0];
  200. if (subView5 && [[subView5 subviews] count] > 1){
  201. UIView *msg = subView5.subviews[1];
  202. if ([msg isKindOfClass:[UILabel class]]){
  203. [(UILabel*)msg setTextAlignment:(NSTextAlignmentCenter)];
  204. }
  205. }
  206. }
  207. }
  208. }
  209. }
  210. UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  211. [self->pasteDataAry removeAllObjects];
  212. UIPasteboard* pasteboard = [UIPasteboard generalPasteboard];
  213. NSString *str = [pasteboard string];
  214. if (str){
  215. [pasteboard setString:[@"CVLUSTERS_NOUSE_" stringByAppendingString:str]];
  216. }
  217. NSString* curSn = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
  218. [HWDataManager setObjectWithKey:curSn value:self->pasteDataAry];
  219. [self.tableView reloadData];
  220. [self haveCentent:NO];
  221. [self setHidden:NO];
  222. }];
  223. UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
  224. [self setHidden:NO];
  225. }];
  226. [sureAction setValue:HW3370FFColor forKey:@"titleTextColor"];//iOS8.3
  227. [alertController addAction:sureAction];
  228. [cancelAction setValue:HW333333Color forKey:@"titleTextColor"];//iOS8.3
  229. [alertController addAction:cancelAction];
  230. // // 弹窗边框
  231. // UIView *subview = alertController.view.subviews.firstObject;
  232. // UIView *alertContentView = subview.subviews.firstObject;
  233. // alertContentView.layer.cornerRadius = 10;
  234. //// alertContentView.layer.shadowColor = HWFFFFFFColor.CGColor;
  235. // alertContentView.layer.shadowOffset = CGSizeMake(0,0);
  236. // alertContentView.layer.shadowOpacity = 1;
  237. // alertContentView.layer.shadowRadius = 7;
  238. // 弹窗背景颜色
  239. if (@available(iOS 13.0, *)) {
  240. alertController.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
  241. }
  242. [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil];
  243. }
  244. - (void)pastedBtnPressed:(NSString*)centontStr{
  245. if ([delegate respondsToSelector:@selector(pastedBtnBePressed: pasteSelectView:)]){
  246. [delegate pastedBtnBePressed:centontStr pasteSelectView:self];
  247. }
  248. }
  249. /*
  250. // Only override drawRect: if you perform custom drawing.
  251. // An empty implementation adversely affects performance during animation.
  252. - (void)drawRect:(CGRect)rect {
  253. // Drawing code
  254. }
  255. */
  256. - (void)haveCentent:(BOOL)have{
  257. if (have){
  258. [tipsLabel setHidden:NO];
  259. [clearBtn setHidden:NO];
  260. [noCententImageView setHidden:YES];
  261. [noCententLabel setHidden:YES];
  262. [self.tableView setHidden:NO];
  263. }else{
  264. [tipsLabel setHidden:NO];
  265. [clearBtn setHidden:YES];
  266. [noCententImageView setHidden:NO];
  267. [noCententLabel setHidden:NO];
  268. [self.tableView setHidden:YES];
  269. }
  270. }
  271. #pragma mark - 列表委托
  272. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
  273. if (pasteDataAry){
  274. return [pasteDataAry count];
  275. }
  276. return 0;
  277. }
  278. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  279. return 1;
  280. }
  281. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  282. static NSString *identifier = @"UseInfoCell";
  283. NSInteger row = indexPath.section;
  284. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
  285. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  286. if (!cell){
  287. cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
  288. [cell setSelectionStyle:UITableViewCellSelectionStyleDefault];
  289. [cell setBackgroundColor:[UIColor clearColor]];
  290. [cell setAccessoryType:(UITableViewCellAccessoryNone)];
  291. UILabel *contentLabel = [[UILabel alloc] init];
  292. [contentLabel setBackgroundColor:[UIColor whiteColor]];
  293. [contentLabel setTextColor:[UIColor hwColor:@"333333"]];
  294. [contentLabel setFont:[UIFont systemFontOfSize:12.f]];
  295. [contentLabel setClipsToBounds:YES];
  296. [contentLabel setTag:12345];
  297. [contentLabel.layer setCornerRadius:3.f];
  298. [cell.contentView addSubview:contentLabel];
  299. [cell.contentView.layer setCornerRadius:3.f];
  300. [cell.contentView setClipsToBounds:YES];
  301. [contentLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
  302. make.height.mas_equalTo(32.f);
  303. make.left.mas_equalTo(10.f);
  304. make.right.mas_equalTo(-0);
  305. make.top.mas_equalTo(0);
  306. }];
  307. }
  308. UILabel *label = [cell.contentView viewWithTag:12345];
  309. [label setText:[NSString stringWithFormat:@" %@",[pasteDataAry objectAtIndex:row]]];
  310. return cell;
  311. }
  312. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
  313. [tableView deselectRowAtIndexPath:indexPath animated:YES];
  314. NSInteger row = [indexPath section];
  315. [self pastedBtnPressed:[pasteDataAry objectAtIndex:row]];
  316. }
  317. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
  318. return 32.f;
  319. }
  320. - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
  321. return YES;
  322. }
  323. // 定义编辑样式
  324. - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
  325. return UITableViewCellEditingStyleDelete;
  326. }
  327. // 进入编辑模式,按下出现的编辑按钮后,进行删除操作
  328. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
  329. if (editingStyle == UITableViewCellEditingStyleDelete) {
  330. [pasteDataAry removeObjectAtIndex:indexPath.section];
  331. UIPasteboard* pasteboard = [UIPasteboard generalPasteboard];
  332. NSString *str = [pasteboard string];
  333. if (str){
  334. [pasteboard setString:[@"CVLUSTERS_NOUSE_" stringByAppendingString:str]];
  335. }
  336. NSString* curSn = ksharedAppDelegate.DeviceThirdIdMod.data.changeSn;
  337. [HWDataManager setObjectWithKey:curSn value:pasteDataAry];
  338. [self.tableView reloadData];
  339. if ([pasteDataAry count] == 0){
  340. [self haveCentent:NO];
  341. }
  342. }
  343. }
  344. // 修改编辑按钮文字
  345. - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
  346. return @"删除";
  347. }
  348. - (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
  349. return [UIView new];
  350. }
  351. - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
  352. return 8.f;
  353. }
  354. @end