ios - 按下通话按钮时关闭 CNContactPickerViewController

标签 ios objective-c swift

比方说,我们有一个简单的应用程序,其中包含一个 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/

相关文章:

ios - 何时显示警报 "App may slow down your iPhone"?

objective-c - Core Data 应用程序不生成 Spotlight 可索引元数据(或者我找不到它)

ios - 将投影矩阵移动到特定的 X、Y、Z 点? OpenGLES 2.0 - iOS

swift - Swift/Objective-C ASN1编码公钥

swift - 具有多个部分以及单选按钮和复选框按钮的 TableView

ios - 使用 didSet 属性观察器而不声明 'oldValue'

iOS:此进程已超过事件进程断言的最大允许数量

android - 将我的 APK 和 API 文件提供给我的客户是否安全?

ios - 如何将一个 TableView 放入另一个 TableView 的单元格中?任何想法?

objective-c - 如何将 Objective-C 中的阿拉伯语(Unicode 编码)转换为字节十六进制表示形式?