以下代码在iOS 5/6中运行良好。在iOS 7中,它看起来像这样(红色椭圆形用于强调)。
代码:
if ([MFMessageComposeViewController canSendText]) {
self.messageComposer = [MFMessageComposeViewController new];
self.messageComposer.recipients = @[number];
self.messageComposer.messageComposeDelegate = self;
[self presentViewController:self.messageComposer
animated:YES
completion:nil];
}
问题:这是一个简单的代码。是否有一些其他外部属性,可能是呈现视图控制器,正在影响这个?任何人都有修复或解决方法吗?
感谢。
答案 0 :(得分:20)
我发现MFMessageComposeViewController的收件人字段似乎从iOS7中的UINavigationBar外观代理中获取了一些外观。为了解决这个问题,我在我的应用程序中完成了以下操作:
通过在IB中的身份检查器上设置自定义类,将此自定义UINavigationController子类用作我想要自定义外观的任何导航控制器的标记:
在我的app delegate中,设置导航栏的外观如下:
[[UINavigationBar appearanceWhenContainedIn:[MyCustomNavigationController class], nil] ...];
这确保我在想要自定义的控制器中获得我想要的导航栏外观,但在其他控制器(如MFMessageComposeViewController)中保留标准导航栏(和相关)外观。这是一个截图;注意MFMessageComposeViewController的标准外观,后台弹出窗口上的自定义导航栏外观:
答案 1 :(得分:20)
我遇到了同样的问题,这是我的解决方案 -
在展示你的留言作曲家([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];
}
多数人!!