禁用MFMessageComposeViewController的自定义外观

时间:2013-10-07 03:19:16

标签: ios objective-c cocoa-touch ios7

当用户在MFMessageComposeViewController的收件人部分输入名称时,收件人栏会变黑并消失。用户仍然可以发送消息,输入文本并执行所有其他操作,他们只是看不到收件人栏。

我觉得这可能(或可能不是)因为MFMessageComposeViewController的导航栏是自定义的(背景图像和自定义字体)。

1。我的导航栏的自定义外观是为整个应用程序设置的,如何为MFMessageComposeViewController禁用它?

2。这个小故障还有其他原因吗?这是iOS7的错误吗?

2 个答案:

答案 0 :(得分:2)

是的,这里的问题是因为我在UINavigationBars上使用UIAppearance代理

那是什么解决了这个问题?

我没有尝试更改MFMessageComposeViewController,它本身就是一个应用程序,我自定义了自己的应用程序。

我使用[UINavigationBar appearance]

而非使用[UINavigationBar appearanceWhenContainedIn:[SomeNavigationController class], nil]

我认为如果你能做到这一点非常简单,因为尝试自定义MFMessageComposeViewController会非常烦人。

以上所有内容均适用于MFMailComposeViewController。

答案 1 :(得分: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];
}

多数人!!