Swift中的CTCallCenter

我正在尝试在Swift中使用CTCallCenter,但它总是显示错误。

我想它可能导致如何使用闭包但实际上我并不熟悉它。

有人有想法解决这个问题吗?

这是我的代码

import CoreTelephony class ViewController: UIViewController{ var callCenter:CTCallCenter = CTCallCenter() override func viewDidLoad() { callCenter.callEventHandler(call:CTCall) -> Void in{ //will get CTcall status here } } } 

有三个错误。

1,Braced语句块是一个未使用的闭包

2,预期表达

3,一行上的连续语句必须用“;”分隔。

我试图改变,但任何方式都不正确。

提前致谢!

我使用以下代码完成了这项工作:

 import CoreTelephony class SomeClass: UIViewController { private var callCenter = CTCallCenter() override func viewDidLoad() { super.viewDidLoad() callCenter.callEventHandler = { (call:CTCall!) in switch call.callState { case CTCallStateConnected: println("CTCallStateConnected") self.callConnected() case CTCallStateDisconnected: println("CTCallStateDisconnected") self.callDisconnected() default: //Not concerned with CTCallStateDialing or CTCallStateIncoming break } } } func callConnected(){ // Do something when call connects } func callDisconnected() { // Do something when call disconnects } } 

希望能帮助到你。

从Apple文档:

响应蜂窝呼叫事件

在呼叫更改状态时分派。

宣言:

var callEventHandler: ((CTCall!) -> Void)!

讨论:

当调用更改状态时,将在默认优先级全局调度队列上调度此属性的块对象。 要处理此类调用事件,请在应用程序中定义处理程序块并将其分配给此属性。 您必须实现处理程序块以支持从任何上下文调用。

如果您的应用程序在发生调用事件时处于活动状态,系统会立即将事件调度给您的处理程序。 但是,在您的应用程序暂停时也可以进行呼叫事件。 暂停时,您的应用程序不会收到呼叫事件。 当您的应用程序恢复活动状态时,它会为每个更改状态的呼叫接收单个呼叫事件 – 无论您的应用程序暂停时呼叫经历了多少状态更改。 在应用程序返回活动状态时,发送给处理程序的单个调用事件描述了当时调用的状态。

例如,假设您的应用程序在呼叫处于连接状态时从活动状态更改为挂起状态。 假设您的应用程序暂停时,呼叫将断开连接。 当您的应用程序返回活动状态时,您将收到一个蜂窝呼叫事件,指示呼叫已断开连接。

这是一个更复杂的例子。 假设您的应用程序在用户启动呼叫后但在连接之前从活动状态更改为挂起状态(即,当呼叫处于拨号状态时,您的应用程序将暂停)。 进一步假设,当您的应用程序暂停时,调用首先更改为已连接状态,然后更改为已断开连接状态。 当您的应用程序返回活动状态时,您将收到一个蜂窝呼叫事件,指示呼叫已断开连接。

可能现在你可以理解如何声明。