- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有某种操作表 UIView,它在点击其中的一个按钮后调用 MFMailComposeViewController,MFMailComposeViewController 被调用并成功呈现,但是当我点击取消时它不会消失,有时会崩溃,我知道这是一个已知问题,但我已经尝试了所有已知的修复程序,但它对我不起作用。那是我的代码:
发送反馈.h:
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
@interface SendFeedback : UIView <UITableViewDelegate, UITableViewDataSource, MFMailComposeViewControllerDelegate, UINavigationControllerDelegate>
//Useless code to the problem.
@property (nonatomic, retain) MFMailComposeViewController *feedBackComposer;
@end
发送反馈.m:
- (void)baseInit
{
//Useless code to the problem.
feedBackComposer = [[MFMailComposeViewController alloc] init];
[feedBackComposer setMailComposeDelegate:self];
[feedBackComposer setToRecipients:[NSArray arrayWithObject:@"info@getibox.com"]];
[feedBackComposer setMessageBody:@"" isHTML:NO];
[feedBackComposer setSubject:@"What I Love About iBox"];
}
调用 Composer : - (void)sendFeedbackComposer { [self.window.rootViewController presentViewController:feedBackComposer animated:YES completion:nil];
关闭它:
- (void)mailComposeController:(MFMailComposeViewController *)feedBackComposer didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
//This method doesn't get called.
[self.window.rootViewController dismissViewControllerAnimated:YES completion:nil];
NSLog(@"Error: %@", error);
}
编辑: 所以,这个问题中提供的所有答案都是正确的,都是我的错。我想做的是:我有一个 UINavigationController
,其中包含一个 UITableView
,该 View 中的 cells
应该触发一个操作表,它是一个 UITableView
通过添加它作为一个 subview
,就像前面的一样,这个 View 也包括 cells
并且其中一个将执行一个操作和它正在调用一个 MFMailComposeViewController
,它被调用但没有成功关闭,即使我已经设置了它的委托(delegate)并且所有方法都正确,问题的原因是调用 的方式MFMailComposeController
,我首先从 super View 中删除了那个小 UITableView
然后显示了 MFMailComposeController
,所以当我关闭邮件编辑器时它崩溃了甚至没有给出结果,这让我把崩溃的原因与委托(delegate)方法混淆了,骗我吧。这是代码:
- (void)removeView
{
if (self) {
[UIView animateWithDuration:0.3
animations:^{backgroundView.alpha = 0;}
completion:^(BOOL finished){
[UIView animateWithDuration:.3
animations:^{self.frame = CGRectMake(0, 568, 320, 568);}
completion:^(BOOL finished){[self removeFromSuperview];}];
}];
}
}
- (void)sendFeedbackComposer
{
feedBackComposer = [[MFMailComposeViewController alloc] init];
[feedBackComposer setMailComposeDelegate:self];
[feedBackComposer setToRecipients:[NSArray arrayWithObject:@"info@getibox.com"]];
[feedBackComposer setMessageBody:@"" isHTML:NO];
[feedBackComposer setSubject:@"What I Love About iBox"];
[self.window.rootViewController presentViewController:self.feedBackComposer animated:YES completion:nil];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row) {
case 2: //That's the index of the MailComposer caller.
[self removeView];
[self sendFeedbackComposer];
break;
case 6:
[self removeView];
break;
default:
break;
}
}
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
[feedBackComposer.presentingViewController dismissViewControllerAnimated:YES completion:nil];
NSLog(@"Error: %@", error);
}
感谢 Stefan Atanasov、Jim 和 Vitaly S。
最佳答案
您确定没有调用委托(delegate)方法吗?我做了一个测试并调用了它,但是要关闭邮件编辑器使用这样的代码:
[feedBackComposer dismissViewControllerAnimated: YES completion: nil];
另外,在 View 实现中实现委托(delegate)真的很奇怪,而不是在 View Controller 中实现
关于ios - 未调用 MFMailComposeViewController 委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21352135/
我的应用程序处于横向模式。当我通过当前模型 View 调用 MFMailComposeViewController 时,它进入横向模式。我旋转设备并且 MFMailComposeViewControl
我使用 MFMailComposeViewController 在我的应用程序中发送邮件。但是,当当前邮件撰写 View Controller 时,所有导航按钮都被禁用(选择邮件地址屏幕中的后退按钮除
我使用MFMailComposeViewController向其他人发送邮件。单击按钮时,撰写表将打开,我可以输入收件人地址、主题、邮件正文。但点击发送按钮后,邮件页面没有关闭。 代码: if ([M
我正在尝试向我的应用程序添加电子邮件功能。我可以让 MFMailComposeViewController 正确显示并预填充其主题和正文,但由于某种原因,当用户单击导航栏中的“取消”或“发送”按钮时,
我正在使用 MFMailComposeViewController,一切看起来都很好。该类表明邮件已发送,但我从未在模拟器上设置过电子邮件,也不知道如何设置。那么如果发送了,它发送到哪个电子邮件服务器
if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *mailViewController
我尝试在我的应用程序中插入邮件工具......我的应用程序基于cocos2d引擎 工具栏(顶部 ->取消、发送...)可见,但我看不到 mfMailComposerViewController Vie
由于某种原因,发送和取消按钮没有出现,我什至在应用程序启动时将以下代码粘贴到 appdelegate 中的应用程序开头,但仍然无法正常工作。有谁可以帮忙吗,谢谢 mailController = [[
MFMailComposeViewController 只有英文版本吗!? 我正在考虑使用 MFMailComposeViewController 来处理从我的应用程序发送电子邮件的想法,但我需要它符
我根据API出示了MFMailComposeViewController,一般情况下,界面是正常的,但是我们应用程序的一些用户提示右上角的发送按钮是灰色的(它变成禁用)的问题,她不能按发送按钮,当然我
如何在不按 MFMailComposeViewController 中的“发送”或“取消”按钮的情况下关闭键盘?! 感谢您的帮助。 最佳答案 你能试试这个吗? UIWindow* keyWindow
我正在开发一个通用应用程序,我正在为 iOS6 编码。 我正在使用 imagePickerController 拍摄照片,然后使用 MFMailComposeViewController 将其作为附件
首先,我使用的是 XCode 4.0.2。 好的,这是我的问题。我可以为 MFMailComposerViewController 构建 Apple 示例程序并在模拟器中运行它(我知道它不会发送电子邮
我已经设置了MFMailComposeViewController,它在iPhone上正常工作,但是在iPad上崩溃了,并说: *** Terminating app due to uncaught
我正在使用 MFMailComposeViewController在具有以下代码的 View Controller 中: if !MFMailComposeViewController.canSend
目前我有一个 NSArray 的电子邮件,我打开一个 View 来结束所有这些电子邮件的电子邮件: MFMailComposeViewController *mailer = [[MFMailComp
我正在使用 MFMailComposeViewController在我的应用程序中撰写反馈电子邮件。 MFMailComposeViewController显示,但无法关闭。 用于打开MFMailCo
我已经按照 Swift Guide 完成了 MFMailComposeViewController() 的常规设置 https://developer.apple.com/library/prerel
我正在尝试在 Swift 中创建以下扩展: extension MFMailComposeViewController { convenience init(document: D
单击警报按钮时尝试使用 MFMailComposeViewController。但是当我单击警报按钮时, Controller 不会弹出。代码如下。我使用了扩展程序,并且在单击警报按钮时尝试调用 se
我是一名优秀的程序员,十分优秀!