MFMailComposeViewController 操作表在 iOS5 上 setStatusBarHidden:YES 时不在屏幕上
Posted
技术标签:
【中文标题】MFMailComposeViewController 操作表在 iOS5 上 setStatusBarHidden:YES 时不在屏幕上【英文标题】:MFMailComposeViewController action sheet is off-screen when setStatusBarHidden:YES on iOS5 【发布时间】:2012-05-14 16:57:34 【问题描述】:我遇到了 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 隐藏了状态栏,然后将显示的 mailViewController 称为当前模式视图控制器。但是,问题是当应用程序处于横向模式和 uikeyboard 出现时,当点击取消按钮作为图像时,操作表不会显示:http://img651.imageshack.us/img651/5489/screenshot20120514at114.png
左上角的红色小图是操作表。如果我设置 statusbarhidden = NO,它就会显示出来。
感谢您的帮助,谢谢
【问题讨论】:
Soo.... 有什么问题?您希望操作表在哪里? 啊,问题是操作表不在屏幕上,您无法点击它。我希望它正常显示,这意味着在取消按钮的正上方或下方。它只发生在 ios5 上 :( 【参考方案1】:我可以通过注册 UIKeyboardWillShowNotification 来解决这个问题(我认为这是一个 iOS 错误)。每当显示键盘时,我手动将 MFMailComposeViewController 的超级视图的框架设置为 +/- 20(状态栏高度),具体取决于方向(横向或横向)。这是一个非常丑陋的 hack,但它现在对我有用。
【讨论】:
感谢您的解决方法。由于这个问题,我没有隐藏状态栏,但现在我必须隐藏它。而你的拯救了我的一天【参考方案2】:我用了一个计时器,移动
[self presentViewController:mc animated:YES completion:^(void) ];
到操作表之外,它也可以工作。
【讨论】:
以上是关于MFMailComposeViewController 操作表在 iOS5 上 setStatusBarHidden:YES 时不在屏幕上的主要内容,如果未能解决你的问题,请参考以下文章