我正在使用以下代码来显示应用程序内的短信。我的应用没有状态栏。 (我在纵向视图中使用320x480像素的屏幕)
if ([MFMessageComposeViewController canSendText])
{
MFMessageComposeViewController* msgController = [[MFMessageComposeViewController alloc] init];
msgController.recipients = [NSArray arrayWithObject:self.globalSMS];
msgController.messageComposeDelegate = self;
[self presentModalViewController:msgController animated:YES];
[msgController release];
}
这样可以显示消息视图控制器。 (但状态栏回来了,这对我来说没有必要显示) 但问题是当我点击“取消”或“发送”时,在返回应用程序后,我看到屏幕顶部(状态栏位置)的空白区域。状态栏是隐藏的。 当我的状态栏在app delegate中设置为隐藏时,为什么会发生这种情况。如何在显示应用程序内的短信视图后摆脱空白区域。
答案 0 :(得分:7)
模态显示消息控制器后隐藏状态栏。像这样:
controller.wantsFullScreenLayout = NO;
[self presentModalViewController:controller animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
答案 1 :(得分:2)
我找到了答案。我们要在视图控制器的viewDidLoad方法中设置:
self.wantsFullScreenLayout = YES;
答案 2 :(得分:0)
问题在纵向视图中。从我所看到的MFMessageComposeViewController在景观中加载,空间不存在。然后,如果方向更改为纵向,则更正布局并且纵向中不存在空间。
注意在横向中,MFMessageComposeViewController通过从左向右滑动呈现。我认为,呈现视图的方式是解决问题的关键。
答案 3 :(得分:0)
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if([MFMessageComposeViewController canSendText]){
controller.body = @"MessageText!!!";
controller.recipients = [NSArray arrayWithObjects:@"123"];
controller.messageComposeDelegate = self;
controller.wantsFullScreenLayout = YES;
[self presentModalViewController:controller animated:YES];
}