禁用 MFMessageComposeViewController 的自定义外观
Posted
技术标签:
【中文标题】禁用 MFMessageComposeViewController 的自定义外观【英文标题】:Disabling Custom Appearance For MFMessageComposeViewController 【发布时间】:2013-10-07 03:19:16 【问题描述】:当用户在 MFMessageComposeViewController 的收件人部分输入姓名时,收件人栏会变黑并消失。用户仍然可以发送消息、输入文本和执行所有其他操作,只是看不到收件人栏。
我感觉这可能(也可能不是)是因为 MFMessageComposeViewController 的导航栏是自定义的(背景图片和自定义字体)。
1.我的导航栏的自定义外观是为整个应用设置的,如何为 MFMessageComposeViewController 禁用它?
2。这个故障还有其他原因吗?是 ios7 的错误吗?
【问题讨论】:
【参考方案1】:是的,这里的问题是因为我使用 UIAppearance 代理 UINavigationBars。
那么是什么解决了这个问题呢?
我没有尝试更改 MFMessageComposeViewController 本身更像是一个应用程序,而是自定义了我自己的应用程序。
我没有使用[UINavigationBar appearance]
,而是使用[UINavigationBar appearanceWhenContainedIn:[SomeNavigationController class], nil]
如果你能做到这一点,我认为这真的很简单,因为尝试自定义 MFMessageComposeViewController 可能会很烦人。
以上所有内容都适用于 MFMailComposeViewController。
【讨论】:
我无法更改文本颜色,我尝试这样做:[[UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setBarTintColor:[UIColor whiteColor]]; [[UIBarButtonItem appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setTintColor:[UIColor whiteColor]]; [[UIBarButtonItem appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil] forState:UIControlStateNormal]; 我不认为iOS允许你直接使用appearanceWhenContainedIn来改变MFMailComposeViewController的颜色(因为它是一个基于系统的视图控制器)【参考方案2】:我遇到了同样的问题,这是我的解决方案-
在展示您的消息作曲家之前([self presentViewController:messageComposer animated:YES completion:nil];
)
设置
[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
在委托方法中
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result
UIImage *backgroundImage = [UIImage imageNamed:@"Navigation Bar"];
[[UINavigationBar appearance] setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];
[self dismissViewControllerAnimated:YES completion:nil];
就是这样!!
【讨论】:
以上是关于禁用 MFMessageComposeViewController 的自定义外观的主要内容,如果未能解决你的问题,请参考以下文章