【发布时间】:2012-12-13 18:52:27
【问题描述】:
我之前看到过几个问题,例如this,但由于缺乏公认的答案以及根据需要实施了一切,我仍然继续面临以下问题:
我显示邮件编写器,但单击取消时,编写器视图冻结。我认为这是由于保存/删除草稿操作表出现在可见框架之外。是的,我已将 mailComposeDelegate 设置为呈现视图控制器,并阅读了几个类似的问题,其中用户尚未处理 (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 委托以在取消时关闭作曲家。我也处理过这个问题,但我似乎一辈子都无法弄清楚为什么在我的通用应用程序的 iPhone 版本中,操作表不会出现在屏幕的可见区域中。以 NSLogged 模态显示邮件编写器的视图控制器的视图框架是 (0,0,320,480)。我的应用程序是通用的,邮件编辑器在 iPad 上完美运行。下面是在 iPhone Simulator 5.1 上运行的作曲家视图的屏幕截图:-
这是显示作曲家的代码:
-(IBAction)mailButtonPressed:(id)sender {
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"Subject"];
[controller setMessageBody:@"Test" isHTML:YES];
[controller setToRecipients:nil];
if(controller) {
[self presentModalViewController:controller animated:YES];
[controller release];
}
}
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error
{
[self dismissModalViewControllerAnimated:YES];
}
【问题讨论】:
-
你能发布你如何呈现邮件编辑器的代码吗?
-
我已经用添加的代码编辑了问题
-
请同时发布 didFinishWithResult 委托方法的代码
-
触发问题,然后在调试器中暂停。运行此调试器命令:
po [[UIApp keyWindow] recursiveDescription]。复制输出并将其粘贴到您的问题中。 -
我有一个技巧,而不是 [self presentModalViewController:controller animated:YES];,使用 appDelegate 的 rootviewcontroller 类,通过在当前类中创建 AppDelegate [[UIApplication sharedApplication] 委托] 的实例然后用 appDelegate 替换 self 。(你的 rootviewController 类)。如果这能解决您的问题,请告诉我。
标签: iphone ios mfmailcomposeviewcontroller mfmailcomposer cancel-button