【问题标题】:MFMessageComposeViewController feedback of editing of To: fieldMFMessageComposeViewController 对 To: 字段编辑的反馈
【发布时间】:2012-09-14 07:21:35
【问题描述】:

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

我的代码中有方法回调:

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

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

【问题讨论】:

  • 我觉得不可能……

标签: ios mfmessagecomposeview


【解决方案1】:

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

来自the documentation

当用户点击其中一个按钮以关闭时调用此方法 消息组合接口。您对此方法的实现 应该关闭视图控制器并执行任何其他操作 需要处理消息的发送。结果参数 让您知道用户是否选择取消或发送消息或 是否发送消息失败。

【讨论】:

  • 我同意您对文档的阅读,但这也让我感到困惑。 这就是原因 文档说:var recipients: [String]? { get set } 为什么要允许 get 的值,除非它反映了 *此 VC 中消息的实际接收者?` 如果你只是想知道他们使用了什么对于recipients,您可以轻松地将其放入变量中以供以后参考。不管你已经传入了什么,都不需要get
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多