gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:14:10 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com