我有一个使用MFMessageComposeViewController
提供的标准短信功能的应用程序。我在SMS对话框的TO:字段中可以看到一组收件人。用户可以删除或添加新收件人。这没关系,但我的应用程序需要知道用户何时编辑此TO:字段,因为当用户更改接收器字段时,我必须执行一些其他操作。
是否有任何方法可以知道收件人字段是否已编辑或是否在“取消”按钮单击或“发送”按钮单击?
我的代码中有方法回调:
-(void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
此方法有controller.recipients
但此数组在调用消息控制器视图之前包含收件人。
答案 0 :(得分:0)
从iOS 7开始,这是不可能的。委托方法提供的唯一信息是用户是选择取消消息,发送消息还是发送失败。
当用户点击其中一个按钮以关闭时,将调用此方法 消息组合界面。你实现这个方法 应该关闭视图控制器并执行任何其他操作 需要处理发送消息。结果参数 让您知道用户是选择取消还是发送消息或 是否发送邮件失败。
答案 1 :(得分:0)
为了增加Enrico的答案,不仅从公共API的角度来看这是不可能的,它也不可能通过欺骗,因为从iOS6开始,邮件和消息组成视图控制器由不同于您自己的进程呈现,并且视图层次结构对应用程序完全隐藏。实际上,如果您要检查消息撰写视图控制器视图的视图层次结构,您会注意到屏幕上的内容实际上并不存在于层次结构中。在远程视图加载期间,给消息撰写视图控制器的设置将传递给远程视图控制器。但是,这是一个单向操作,并且在加载远程视图后不会更新(或读取)属性。
这是为了保护用户的隐私。这是iOS的基本设计。您应该接受这一点,并相应地设计您的应用程序。