|
@@ -0,0 +1,76 @@
|
|
|
|
|
+//
|
|
|
|
|
+// RAContact.m
|
|
|
|
|
+// APEX CRM
|
|
|
|
|
+//
|
|
|
|
|
+// Created by Jack on 2018/12/15.
|
|
|
|
|
+// Copyright © 2018 USAI. All rights reserved.
|
|
|
|
|
+//
|
|
|
|
|
+
|
|
|
|
|
+#import "RAContactHelper.h"
|
|
|
|
|
+#import <Contacts/Contacts.h>
|
|
|
|
|
+#import <ContactsUI/ContactsUI.h>
|
|
|
|
|
+
|
|
|
|
|
+static RAContactHelper *sharedInstance;
|
|
|
|
|
+
|
|
|
|
|
+@interface RAContactHelper () <CNContactPickerDelegate>
|
|
|
|
|
+
|
|
|
|
|
+@property (nonatomic,copy) void(^pickerCompleteBlk)(BOOL canceled, NSArray<CNContact *> *contacts);
|
|
|
|
|
+
|
|
|
|
|
+@end
|
|
|
|
|
+
|
|
|
|
|
+@implementation RAContactHelper
|
|
|
|
|
+
|
|
|
|
|
++ (instancetype)defaultHelper {
|
|
|
|
|
+
|
|
|
|
|
+ static dispatch_once_t token;
|
|
|
|
|
+ dispatch_once(&token, ^{
|
|
|
|
|
+ sharedInstance = [RAContactHelper new];
|
|
|
|
|
+ });
|
|
|
|
|
+ return sharedInstance;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+- (void)showContactPickerByViewController:(UIViewController *)viewController withComplete:(void(^)(BOOL canceled, NSArray<CNContact *> *contacts))complete {
|
|
|
|
|
+ if (viewController) {
|
|
|
|
|
+
|
|
|
|
|
+ CNContactPickerViewController *pickerVC = [[CNContactPickerViewController alloc] init];
|
|
|
|
|
+ pickerVC.delegate = self;
|
|
|
|
|
+ [viewController presentViewController:pickerVC animated:YES completion:^{
|
|
|
|
|
+
|
|
|
|
|
+ }];
|
|
|
|
|
+ self.pickerCompleteBlk = [complete copy];
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+#pragma mark - Contact
|
|
|
|
|
+
|
|
|
|
|
+- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker {
|
|
|
|
|
+ if (self.pickerCompleteBlk) {
|
|
|
|
|
+ self.pickerCompleteBlk(YES, nil);
|
|
|
|
|
+ }
|
|
|
|
|
+ self.pickerCompleteBlk = nil;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 四个select代理方法只用实现一个就可以
|
|
|
|
|
+// select contact 优先级比 select contact property高
|
|
|
|
|
+// 多选 优先级 比单选 高
|
|
|
|
|
+
|
|
|
|
|
+- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact *> *)contacts {
|
|
|
|
|
+ if (self.pickerCompleteBlk) {
|
|
|
|
|
+ self.pickerCompleteBlk(NO, contacts);
|
|
|
|
|
+ }
|
|
|
|
|
+ self.pickerCompleteBlk = nil;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperties:(NSArray<CNContactProperty *> *)contactProperties {
|
|
|
|
|
+//
|
|
|
|
|
+//}
|
|
|
|
|
+//
|
|
|
|
|
+//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact {
|
|
|
|
|
+//
|
|
|
|
|
+//}
|
|
|
|
|
+//
|
|
|
|
|
+//- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty {
|
|
|
|
|
+//
|
|
|
|
|
+//}
|
|
|
|
|
+
|
|
|
|
|
+@end
|