无法在iOS7中显示模式ViewController

我试图显示系统定义的视图控制器(MFMailComposeViewController,TWTweetComposeViewController等)作为一个模式的观点。

但是这些viewcontrollers不会出现在iOS 7(这些运行在iOS5,iOS6)。

我创build的ViewController出现在iOS7(ex.HogeViewController)中。

我不调用presentViewController:animated:completionviewDidLoadviewWillAppear presentViewController:animated:completion

有人有想法吗?

控制台日志:

init Error Domain = NSCocoaErrorDomain Code = 4097“操作无法完成(Cocoa error 4097.)”

要么

_serviceViewControllerReady:error:Error Domain = NSCocoaErrorDomain Code = 4097“The operation could not be completed。(Cocoa error 4097.)”

要么

不平衡呼叫开始/结束外观转换。

TWTweetComposeViewController(不会出现)

 TWTweetComposeViewController *viewController = [[TWTweetComposeViewController alloc]init]; viewController.completionHandler = ^(TWTweetComposeViewControllerResult result){ NSLog(@"Result : %d",result); }; [self presentViewController:viewController animated:YES completion:NULL]; 

日志

结果:0

MFMailComposeViewController(很快出现并解散)

 - (void)send:(NSString*)email{ if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self; NSArray *toRecipients = @[email]; [picker setToRecipients:toRecipients]; [picker setSubject:@"Subject"]; [picker setMessageBody:@"Body" isHTML:NO]; [self.navigationController presentViewController:picker animated:YES completion:NULL]; } } - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { [self dismissViewControllerAnimated:YES completion:^{ NSLog(@"error:%@,result:%d",error.description,result); }]; } 

日志

_serviceViewControllerReady:错误:错误域= NSCocoaErrorDomain代码= 4097“操作无法完成。(cocoa错误4097.)”不平衡调用开始/结束外观转换。 错误:(空),结果:0

原来这个问题只在定制UIBarButton的时候出现。 如果我们在iPhone 5s上运行的32位应用程序中使用以下内容,则存在以下问题:

 [[UIBarButtonItem appearance] setTitlePositionAdjustment:UIOffsetMake(0, 1.0) forBarMetrics:UIBarMetricsDefault]; 

离开这条线可以解决这个问题。 我们已经提交了一个雷达。

如果在项目设置中没有编译64位(arm64),这是一个问题。 虽然这可能并不总是一些人的select,因为目前谷歌分析不支持64位设备。

您可能能够避免一些子类的这个问题。 我有同样的问题,在我的情况下,罪魁祸首是:

 [[UISearchBar appearance] setSearchTextPositionAdjustment:UIOffsetMake(15.0f, 0.0f)]; 

我已经使用UISearchBar的子类,所以我改变了:

 [[KA_SearchBar appearance] setSearchTextPositionAdjustment:UIOffsetMake(15.0f, 0.0f)]; 

这为我解决了这个问题。 只在iPhone 5s,iOS 7.0.3上testing。

我在相同的情况下获得相同的行为。 在我的情况下,原来是由于使用UITableView的“setSeparatorInset”外观select器造成的。 摆脱那固定的问题。 这看起来像苹果的结局肯定,但至less有一个解决方法。

这个问题显示有人有类似的问题,并在他们的情况下摆脱了UISearchBar外观select器固定它。 所以这些UIA外观select器中有些是错误的。

这篇文章帮助我find了解决类似问题的方法。 但是我的问题与标签栏无关,所以我想我会分享,如果有人遇到这个post:

点击表格单元格时,邮件模式打开,但会立即解散。 就我而言,这段代码引起了这个问题:

 [[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setFont:[UIFont systemFontOfSize:17.0]]; 

我删除它,一切正常!

在我的情况下,下面的代码将导致在64位机器或模拟器相同的问题。 希望帮助某人遇到这个问题。

 if ([UITableViewCell instancesRespondToSelector:@selector(setSeparatorInset:)]) { [[UITableViewCell appearance] setSeparatorInset:UIEdgeInsetsZero]; } 

这个问题发生在iPad空气(64位),当应用程序不符合64架构。 我遇到的问题是每个UIAppearanceselect器尝试使用UIOffsetMake / UIOffsetZero不能正常工作! 例

  [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(1.0, 1.0) forBarMetrics:UIBarMetricsDefault]; 

要么

  [[UITableViewCell appearance] setSeparatorInset:UIEdgeInsetsMake(0, 5, 0, 5)]; 

我认为它在苹果代码中的一个错误,我尝试了几件事情,但没有任何工作。 如果你可以评论你在UIAppearanceselect器中设置插入的地方,那么更好

当使用SLComposeViewController与使用64位或iPhone 5s模拟器的Facebook或Twitter共享时,我有同样的错误,然后我删除使用“外观,例如[UITableViewCell外观]或[UIBarButtonItem外观]的每一行代码,每一次运行都可以。

我更新了Xcode到5.1版本,现在它工作正常。

NSXPCConnectionInterrupted = 4097.我会让你的代码重试命令,因为错误看起来是暂时的。