iOS 8中的MFMailComposeViewController

问题描述:

首先,我的应用在iOS 7上运行良好,因为iOS 8无法通过“MFMailComposeViewController”发送应用内电子邮件。 消息窗口出现,仅显示邮件主题并在几秒钟内关闭。 我发现这个线程描述我的问题,现在试图实现从“乔吹”的答案https://*.com/a/25864182/4061869iOS 8中的MFMailComposeViewController

但即时通讯一些错误,一些语义和解析问题。根据解决办法,这部分

最糟糕的地方:

Of course have this in your Prefix file 

#define APP ((AppDelegate *)[[UIApplication sharedApplication] delegate]) 
// it's worth noting that is the delegate, not the "application" 

导致这个错误:

Use of undeclared identifier 'AppDelegate'

有谁知道哪里出了问题,可以吗? 我根据appdelegat.h/.m的文件名尝试了不同的'AppDelegate'字样,但没有任何帮助。

您可以通过定义应用程序委托中取的ViewController您工作中,:

AppNameAppDelegate *APP = [[UIApplication sharedApplication]delegate]; 

不言自明的,由AppName的我的意思是你的应用程序的名称。确保将AppDelegate.h导入到.m文件中。

#import "AppNameAppDelegate.h" 

为了记录在案,我也有同样的问题与MFMailComposeViewController,我已经尝试过的方法在您linked(创建一个全球性的邮件作曲家)职位的建议,但它仍然不会为我工作使用iOS 8模拟器。显然它适用于运行iOS 8的物理设备,但我个人目前还不能确认。

+0

我将导入行添加到前缀文件中,大多数错误都消失了。现在我得到一个新的这一行'[APP cycleTheGlobalMailComposer];' 它说'没有可见@interface for'ITLAppDelegate'声明选择器'cycleTheGlobalMailComposer'' 当使用建议的方法编译时,你有任何错误? – k0riz0n 2014-09-21 10:50:59

+0

如果你在'AppDelegate.m'文件中有'cycleTheGlobalMailComposer'方法,那么你需要从你想要调出邮件编辑器的任何视图中调用该方法。你可以通过在'AppDelegate.h'文件中用' - (void)cycleTheGlobalMailComposer;'来定义它。然后调用这个方法:'ITLAppDelegate * callMethod = [[ITLAppDelegate alloc] init]; [callMethodcycleTheGlobalMailComposer];'。这应该摆脱任何错误。当该方法被调用时,您应该设置断点,以便您可以确切地看到它的去向。这应该会停止编译错误。 – rosshump 2014-09-21 12:27:32

+0

' - (void)cycleTheGlobalMailComposer;'在ITLAppDelegate.m中定义为它在本教程中编写的内容。现在我试了你的代码'ITLAppDelegate * callMethod = [[ITLAppDelegate alloc] init]; [callMethod cycleTheGlobalMailComposer];'但是错误仍然是'没有可见@interface for'ITLAppDelegate'声明选择器'cycleTheGlobalMailComposer'。 – k0riz0n 2014-09-21 15:00:23