Procházet zdrojové kódy

1.完成iOS联系人选择。

Pen Li před 7 roky
rodič
revize
2b657764aa

+ 19 - 0
common/Contact/RAContactHelper.h

@@ -0,0 +1,19 @@
+//
+//  RAContact.h
+//  APEX CRM
+//
+//  Created by Jack on 2018/12/15.
+//  Copyright © 2018 USAI. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+@class CNContact, UIViewController;
+@interface RAContactHelper : NSObject
+
++ (instancetype)defaultHelper;
+
+- (void)showContactPickerByViewController:(UIViewController *)viewController withComplete:(void(^)(BOOL canceled, NSArray<CNContact *> *contacts))complete;
+
+@end

+ 76 - 0
common/Contact/RAContactHelper.m

@@ -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