比方说,我们有一个简单的应用程序,其中包含一个 View Controller 和单个栏按钮项目,它将打开 CNContactPieckerViewController
。因此,我进入选择器 View ,选择联系人,进入详细信息 View 。如果我的 View Controller 中有 contactPicker:didSelectContactProperty:
委托(delegate)方法的实现,按下调用按钮将调用委托(delegate)方法,并且 CNContactPickerViewController
将被解除,并且为了进行我需要的调用在委托(delegate)方法中手动处理所有事情。但是,如果没有实现 contactPicker:didSelectContactProperty:
委托(delegate)方法,则会进行调用(基于您选择的调用类型 - GSM、WhatsApp 或其他),但 CNContactPickerViewController
code> 不会被解雇。
问题
是否有可能在不丢失处理调用功能的情况下关闭CNContactPickerViewController
。
最佳答案
您可以在调用连接和断开两种状态时添加观察者,并且可以忽略 CNContactPickerViewController
Controller 。但我建议使用 contactPicker:didSelectContactProperty :
委托(delegate)来实现此功能。
1.导入CallKit框架
#import <CallKit/CXCallObserver.h>
#import <CallKit/CXCall.h>
2.使类符合 CXCallObserverDelegate
协议(protocol)。
3.强烈引用CXCallObserver
像这样的对象
@property (nonatomic, strong) CXCallObserver *callObserver;
4.在演示时初始化 callObserver 对象 CNContactPieckerViewController
就像一样
CXCallObserver *callObserver = [[CXCallObserver alloc] init];
[callObserver setDelegate:self queue:nil];
_callObserver = callObserver;
5.最后实现委托(delegate)方法
-(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");
}
}
关于ios - 按下通话按钮时关闭 CNContactPickerViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45635084/