0

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

我有一种感觉,这可能(也可能不是)是因为 MFMessageComposeViewController 的导航栏是自定义的(背景图像和自定义字体)。

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

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

4

2 回答 2

2

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

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

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

我没有使用[UINavigationBar appearance],而是使用[UINavigationBar appearanceWhenContainedIn:[SomeNavigationController class], nil]

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

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

于 2013-10-07T03:56:33.423 回答
2

我遇到了同样的问题,这是我的解决方案-

在呈现您的消息 composer( [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];
}

就这样!!

于 2013-12-13T10:43:19.650 回答