MFMailComposeViewController 操作表在 iOS5 上设置状态栏隐藏:是时处于屏幕外



我遇到了MFMailComposeViewController的取消按钮的问题。这是我的背景

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
   [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (IBAction)showButtonDidTouch:(id)sender {
    if ([MFMailComposeViewController canSendMail]) {
         MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
         mailViewController.mailComposeDelegate = self;
         mailViewController.modalPresentationStyle = UIModalPresentationFormSheet;
         [self presentModalViewController:mailViewController animated:YES];
         [mailViewController release];
}
}

我在viewDidLoad上隐藏了状态栏,然后调用显示的邮件视图控制器作为当前的模态视图控制器。但是,问题是当应用程序处于横向模式并出现 uikeyboard 时,当取消按钮点击为图像时,操作表不会显示:http://img651.imageshack.us/img651/5489/screenshot20120514at114.png

左上角的红色小图像是操作表。如果我设置状态栏隐藏 = 否,它会显示。

感谢您的帮助,谢谢

我能够通过注册UIKeyboardWillShowNotification来解决此问题(我认为这是一个iOS错误)。每当显示键盘时,我都会手动将 MFMailComposeViewController 的超级视图的框架设置为 +/- 20(状态栏高度),具体取决于方向(横向向左或向右)。这是一个非常丑陋的黑客,但它现在对我有用。

我用了一个计时器,移动

[self presentViewController:mc animated:YES completion:^(void) {}];

到操作表之外,它也可以工作。

最新更新