在iOS 7中编写邮件:断言失败 - [MFComposeSubjectView layoutSublayersOfLayer:]

Gl0*_*b1l 6 cocoa-touch objective-c ios ios7 mfmailcomposeviewcontroller

我目前正在使用iOS7和MFMailComposeViewController.有时(经常但不总是),我在呈现时遇到以下崩溃MFMailComposeViewController:

***断言失败 - [MFComposeSubjectView layoutSublayersOfLayer:],/ SourceCache/UIKit/UIKit-2903.23/UIView.m:8540

这是我如何呈现控制器:

if ([MFMailComposeViewController canSendMail])
    {
        MFMailComposeViewController* mailVC = [[MFMailComposeViewController alloc] initWithNibName:nil bundle:nil];
        mailVC.mailComposeDelegate = self;

        [mailVC setSubject:@"blablabla"]];
        [mailVC setMessageBody:@"blablabla" isHTML:NO]; 
        mailVC.modalPresentationStyle = UIModalPresentationFormSheet;
        mailVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

        if(isIpad) {
            [sharedParentViewController presentViewController:mailVC animated:YES completion:nil];
        } else {
            [sharedNavigationViewController presentViewController:mailVC animated:YES completion:nil];
        }
    }
Run Code Online (Sandbox Code Playgroud)

sharedParentViewControllersharedNavigationViewController定义了宏来访问应用程序中的任何位置的根视图控制器.

我为所有例外设置了一个断点,但不幸的是,它从未打破过.

使用iOS6和iOS5,一切正常,任何想法,我可以尝试解决这个问题?

编辑:

这是崩溃日志:

Stack Trace

Auto Layout still required after executing -layoutSubviews. MFComposeSubjectView's implementation of -layoutSubviews needs to call super.

0   CoreFoundation                      0x3099ff4b <redacted> + 130
1   libobjc.A.dylib                     0x3b1366af objc_exception_throw + 38
2   CoreFoundation                      0x3099fe25 <redacted> + 0
3   Foundation                          0x31347fe3 <redacted> + 90
4   UIKit                               0x33112e63 <redacted> + 538
5   QuartzCore                          0x32d99c6b <redacted> + 142
6   QuartzCore                          0x32d9547b <redacted> + 350
7   QuartzCore                          0x32d9530d <redacted> + 16
8   QuartzCore                          0x32d94d1f <redacted> + 230
9   QuartzCore                          0x32d94b2f <redacted> + 314
10  QuartzCore                          0x32d8e85d <redacted> + 56
11  CoreFoundation                      0x3096b1cd <redacted> + 20
12  CoreFoundation                      0x30968b71 <redacted> + 284
13  CoreFoundation                      0x30968eb3 <redacted> + 730
14  CoreFoundation                      0x308d3c27 CFRunLoopRunSpecific + 522
15  CoreFoundation                      0x308d3a0b CFRunLoopRunInMode + 106
16  GraphicsServices                    0x355c7283 GSEventRunModal + 138
17  UIKit                               0x33177049 UIApplicationMain + 1136
18  teleobs                             0x00037921 main + 116
19  teleobs                             0x000378a8 start + 40
Run Code Online (Sandbox Code Playgroud)

avd*_*hin 0

我猜这个问题的原因是:

  1. 启用自动布局(在情节提要等中)
  2. UIView一个(或更多)类别的调用- (void)layoutSubviews

检查所有UIView类别(在您的项目中)如果调用- (void)layoutSubviews,请尝试注释此调用以进行测试。或者直接关闭自动布局