在按下呼叫按钮时关闭CNContactPickerView控制器



假设,我们有一个简单的应用程序,有一个视图控制器和单栏按钮项目,它将打开CNContactPieckerViewController。因此,我进入选择器视图,选择联系人,进入详细信息视图。如果在我的视图控制器中实现了contactPicker:didSelectContactProperty:委托方法,则按调用按钮将调用委托方法,CNContactPickerViewController将被关闭,为了进行调用,我需要在委托方法中手动处理所有内容。但是,如果没有实现contactPicker:didSelectContactProperty:委托方法,则会进行呼叫(基于您选择的呼叫类型 - GSM,WhatsApp或其他方式(,但CNContactPickerViewController不会被驳回。

问题

是否有可能在不丢失处理呼叫功能的情况下CNContactPickerViewController关闭。

您可以在调用连接和断开连接时为两种状态添加观察器,并且可以关闭CNContactPickerViewController控制器。 但我建议使用contactPicker:didSelectContactProperty :委托来实现此功能。

1.导入调用套件框架

#import <CallKit/CXCallObserver.h>

#import <CallKit/CXCall.h>

2.符合CXCallObserverDelegate协议。

3.像这样强烈引用CXCallObserver对象

@property (nonatomic, strong) CXCallObserver *callObserver;

4.在呈现CNContactPieckerViewController时初始化调用观察者对象,如下所示

CXCallObserver *callObserver = [[CXCallObserver alloc] init]; [callObserver setDelegate:self queue:nil]; _callObserver = callObserver;

5.最后实现委托方法

-(void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call {
if (call.hasConnected) {
NSLog(@"********** voice call connected **********/n");
} else if(call.hasEnded) {
[(your CNContactPieckerViewController object) dismissViewControllerAnimated:YES completion:nil];
NSLog(@"********** voice call disconnected **********/n");
}
}

最新更新