【问题标题】:How to push a MFMailComposeViewController? (iOS 5)如何推送 MFMailComposeViewController? (iOS 5)
【发布时间】:2011-11-28 17:00:17
【问题描述】:

我想从一个表格视图中展示一个 MFMailComposeViewController。我不想使用presentModalViewController:animated: 方法,而是push 视图控制器,因此它与此表视图中的其他动画一致。

因为 MFMailComposeViewController 是 UINavigationController 并且不支持推送导航控制器,所以我使用了:

[[self navigationController] pushViewController:[mailComposer topViewController] animated:YES];

这可行,但是当我点击取消按钮时,它会发出警告:

呈现由其超级视图剪辑的操作表。某些控件可能无法响应触摸。在 iPhone 上尝试 -[UIActionSheet showFromTabBar:] 或 -[UIActionSheet showFromToolbar:] 而不是 -[UIActionSheet showInView:]。

UIActionSheet 底部的取消按钮不响应触摸。有谁知道是否可以推送 MFMailComposeViewController?

【问题讨论】:

  • 您已经回答了您的问题 - MFMailComposeViewController 是 UINavigationController,不支持推送导航控制器
  • 但是可以推送 MFMailComposeViewController 的 UIViewController。还是不支持?
  • 您的代码推送 UIViewController(topViewController 返回它)。这是正常行为。
  • 是的,我知道,但缺点是当您使用 MailComposer 的取消按钮时 UIActionSheet 警告。所以它似乎不受支持,或者我错过了一个步骤(比如告诉这个视图控制器使用 [self navigationController] 作为它的导航控制器)。
  • 我认为从包含 MailComposer 的导航调用的 UIActionSheet 和此操作表无法找到(或执行)某些操作,因为您只有导航层次结构的一部分(缺少导航栏或工具栏)。

标签: objective-c ios uiactionsheet mfmailcomposer


【解决方案1】:

MFMailComposeViewController 呈现为模态视图与Apple 的HIG 一致。将其推送到导航堆栈不是。使用-presentModalViewController:animated:(或-presentViewController:animated:completion:,如果在iOS 5 或更高版本上执行)

【讨论】:

  • 感谢您的回答。好的,所以没有办法从右到左为 MailComposer 设置动画?不支持这个动画似乎有点奇怪。我认为用户不清楚为什么“发送电子邮件”功能从顶部开始动画,而该表格视图中的所有其他功能都通过从右到左的推送进行动画处理。
  • 您也可以使用UIModalTransitionStyleFlipHorizontal。否则,从右到左的转换旨在指示用户正在向下钻取信息层次结构。呈现邮件作曲家旨在成为“动作中断”,并且旨在成为模态动作。如果 Apple 改变其行为或结构,从自包含的 UINavigationController 组件中获取视图控制器层次结构是一个损坏的应用程序的收据。
  • 为了将来了解,presentModalViewController:animated: 已被 Apple 弃用,因此您应该改用 presentViewController:animated:completion:
猜你喜欢
  • 2023-04-05
  • 2012-09-21
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
相关资源
最近更新 更多