Twitter共享立即取消64位设备和模拟器(7.0 SDK)

时间:2013-11-08 17:26:48

标签: ios twitter

我正在使用的应用使用SLComposeViewController发送推文。此功能已在应用程序中工作了一段时间。将SDK更新到7.0后,我遇到了问题。

问题是SLComposeViewController在呈现后立即调用其完成处理程序。 SLComposeViewControllerResult为Cancel。任何尝试显示SLComposeViewController都会发生这种情况。

我能够在示例应用程序中将此代码用于64位设备/模拟器,但它失败了我正在处理的更大的应用程序。

工作案例:

  • 任何具有6.1 SDK的设备
  • 任何带有7.0 SDK的32位设备
  • 我的示例应用

失败的案例:

  • 64位iPhone 5S和64位模拟器

以下是失败代码的简单实现(几乎可以在任何示例中看到)。

   if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
  {
    SLComposeViewController *vc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];



    [vc setInitialText:@"Hi Twitter"];

    vc.completionHandler = ^(SLComposeViewControllerResult result)
    {

    };

    [self presentViewController:vc animated:YES completion:nil];

    return;
  }

以下文章表明其他应用在通过Twitter http://tellmenews.com/ipad-air-suffers-from-same-ios-7-twitter-sharing-problem-as-iphone-5s/179686/samantha-ross分享时遇到问题。为了记录,iOS照片应用程序的Twitter共享可以在我的设备上运行。

我的工作示例应用与失败的应用之间存在差异的任何想法?

2 个答案:

答案 0 :(得分:1)

作为短期解决方案,您最好的选择是更改目标>构建设置>架构> “标准体系结构”的体系结构,而不是“标准体系结构(包括64位)”。

我怀疑这是一个错误,您最好的选择是将其提交给http://bugreport.apple.com。然后,在每次更新操作系统更新时,将构建设置更改为包含64位,以查看问题是否已解决。

答案 1 :(得分:1)

这绝对是Apple框架中的一个错误,并且除了SLComposeViewController之外,已知会影响多个视图控制器,包括MFMailComposeViewController和TWTweetComposeViewController,如本答案中所述:Cannot show modal ViewController in iOS7。它似乎会影响在64位设备上运行的32位二进制文​​件,并且可以通过许多不同的UIAppearance自定义调用来触发,但不是所有这些都是。

可以通过识别应用程序中触发此行为的特定UIAppearance自定义调用并在64位设备上删除这些调用,直到您向应用程序添加64位二进制支持。不幸的是,如果不使用UIAppearance自定义调用触发错误,如何在64位设备上解决应用程序外观的问题就会让您陷入困境。

导致此问题的一些UIAppearance调用是:

[[UILabel appearanceWhenContainedIn:[UIButton class] setShadowOffset:CGSizeMake(0.0, 1.0)];
[[UIBarButtonItem appearance] setTitlePositionAdjustment:UIOffsetMake(0, 1) forBarMetrics:UIBarMetricsDefault];
[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setFont:[UIFont systemFontOfSize:17.0]];