4

我有一个应用程序使用由MFMessageComposeViewController. 我在 TO: SMS 对话框的字段中看到了一组收件人。用户可以删除或添加新的收件人。这没关系,但我的应用程序需要知道用户何时编辑此 TO: 字段,因为当用户更改接收者字段时,我必须执行一些其他操作。在单击取消按钮或单击发送按钮后,有什么方法可以知道收件人字段是否已编辑?

我的代码中有方法回调:

-(void)messageComposeViewController:(MFMessageComposeViewController *)controller    didFinishWithResult:(MessageComposeResult)result

此方法有controller.recipients,但此数组包含调用消息控制器视图之前的收件人。

4

2 回答 2

0

这在 iOS 7 中是不可能的。委托方法提供的唯一信息是用户是选择取消消息、发送消息还是发送失败。

文档中

当用户点击其中一个按钮以关闭消息撰写界面时,将调用此方法。此方法的实现应该关闭视图控制器并执行处理消息发送所需的任何其他操作。result 参数让您知道用户是否选择取消或发送消息,或者发送消息是否失败。

于 2013-10-12T00:13:24.710 回答
0

为了补充 Enrico 的答案,这不仅从公共 API 的角度来看是不可能的,而且通过诡计也是不可能的,因为自 iOS6 以来,邮件和消息撰写视图控制器由与您自己的进程不同的进程呈现,并且它们的视图层次结构是完全隐藏在您的应用程序中。实际上,如果您要检查消息撰写视图控制器的视图的视图层次结构,您会注意到屏幕上的任何内容实际上都不存在于层次结构中。在远程视图加载期间,给消息撰写视图控制器的设置将传递给远程视图控制器。但是,这是一种单向操作,并且在远程视图加载后属性不会更新(或读取)。

这是为了保护用户的隐私。这是 iOS 的基本设计。您应该接受这一点,并相应地设计您的应用程序。

于 2013-10-12T00:59:30.240 回答