- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个简单的 UITextView
,里面有一个电子邮件链接。 TextView 是可选择的并检测链接。这样,您可以单击电子邮件,它会以模式方式打开一个 MFMailComposeViewController
View Controller 。
但是,我在应用启动时做了一些定制:
[[UINavigationBar appearance] setBarTintColor: myGreyColor];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: myFont}];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
这样,所有导航栏都是灰色的,带有白色文本和白色按钮,标题具有自定义字体。
我的问题是所有这些都不适用于邮件编辑器:栏是灰色的,标题是白色的,但字体是默认的 helvetica neue,按钮是默认的蓝色。而且,状态栏是黑色的,即使我的 Info.plist 说 UIStatusBarStyleLightContent
和 View controller-based status bar appearance
设置为 NO
。
我知道手动调用时如何自定义MFMailComposeViewController
,但是这里自动弹出。如何将我的样式应用于它?
最佳答案
编辑
自定义 MFMailComposeViewController
的外观是一个非常糟糕的主意,很可能会使您的应用程序被 Apple 拒绝。仅当您不打算将您的应用程序提交给 Apple 时才应使用以下解决方案。
看起来我解决了,感谢Ray Wenderlich (再次..)。这是完整的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
[…] // Initializations
// Link detection
[_textView.attributedText addAttribute:NSLinkAttributeName value:@"mail://contact" range:[[content string] rangeOfString:@"contact@mymail.com"]];
_textView.delegate = self;
}
// Handle the link tap yourself
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
if ([[URL scheme] isEqualToString:@"mail"]) {
MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
[mailVC setToRecipients:@[@"contact@ mymail.com"]];
[mailVC setSubject:@"About QuickReminder for iOS"];
mailVC.mailComposeDelegate = self;
// Re-set the styling
[mailVC.navigationBar setBarTintColor:myGreyColor];
[mailVC.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: myFont}];
[mailVC.navigationBar setTintColor:[UIColor whiteColor]];
[self presentViewController:mailVC animated:YES completion:^{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}];
return NO;
}
return YES;
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
// Notifies users about errors associated with the interface
switch (result)
{
case MFMailComposeResultCancelled:
NSLog(@"Result: canceled");
break;
case MFMailComposeResultSaved:
NSLog(@"Result: saved");
break;
case MFMailComposeResultSent:
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Result" message:@"Mail Sent Successfully" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
break;
case MFMailComposeResultFailed:
NSLog(@"Result: failed");
break;
default:
NSLog(@"Result: not sent");
break;
}
[controller dismissViewControllerAnimated:YES completion:nil];
}
关于ios - 自定义从 UITextView 打开的自动 MFMailComposeViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22144874/
我的应用程序处于横向模式。当我通过当前模型 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
我是一名优秀的程序员,十分优秀!