ios - UIActivityController 与 64 位设备

标签 ios objective-c 64-bit uiactivityviewcontroller

我们最近发现我们的 UIActivityViewController 实现调用呈现 MailComposerVC、消息、facebook 和 twiter VC 的模态视图时存在问题。在所有旧设备上,所需的消息编辑器打开并允许用户在点击事件表上的图标后编写消息。在 64 位设备和 64 位模拟器上,当用户点击相关图标时,事件失败(正常)并且我们在控制台中看到以下错误:

2013-11-08 12:13:00.885 2life[24880:a0b] Cannot find executable for CFBundle 0xd2795d0  (not loaded)
2013-11-08 12:13:00.891 2life[24880:a0b] Launch Services: Registering unknown app identifier com.apple.mobilemail failed
2013-11-08 12:13:00.892 2life[24880:a0b] Launch Services: Unable to find app identifier com.apple.mobilemail
2013-11-08 12:13:09.267 2life[24880:a0b] _serviceViewControllerReady:error: Error Domain=NSCocoaErrorDomain Code=4097 "The operation couldn’t be completed. (Cocoa error 4097.)"

Does anyone have any insight on this? Here's our method:

- (void)showShareView:(NSIndexPath *)indexPath
{
    NSString *text = NSLocalizedString(@"tellAFriendText", @"This is deault text sting for the message.");
    //NSString *text = @"Test";
    UIImage *image = [UIImage imageNamed:@"tell-a-friend.png"];
    NSArray *activityItems = [NSArray arrayWithObjects: text, image, nil];
    UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
   // activityController.tintColor = [UIColor colorWithWhite:1.0f alpha:0.8f];

    NSArray *exclusions = @[UIActivityTypeSaveToCameraRoll,UIActivityTypeAssignToContact,UIActivityTypeCopyToPasteboard,UIActivityTypePrint];
    activityController.excludedActivityTypes = exclusions;
    if (iPhone) {
        [self presentViewController:activityController animated:YES completion:nil];
    }else if(iPad){
        UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:activityController];
        popover = pop;
        CGRect rect = [self.menuTableView rectForRowAtIndexPath:indexPath];
        rect.origin.x = (rect.size.width - rect.size.width/2)/2;
        rect.size.width /= 2;
        rect.size.height /= 2;
        [pop presentPopoverFromRect:rect inView:self.menuTableView permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

    }
}

最佳答案

我们最近解决了这个问题。事实证明,使用 UIAppearnce 调整 BarButtonTitlePosition 的位置会导致 composer ViewControllers 退出。 注释掉以下内容可以解决问题。

[[UIBarButtonItem 外观] setBackButtonTitlePositionAdjustment:UIOffsetMake(0.0f, -2.0f) forBarMetrics:UIBarMetricsDefault];

关于ios - UIActivityController 与 64 位设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19913865/

相关文章:

.net - 在 64 位 Windows 计算机上使用 32 位 com 运行 32 位应用程序

iphone - 将手势从 Storyboard添加到单元格

ios - 如何在选项卡式应用程序中的 ViewController 之间共享数据

objective-c - Xcode 4 中的 ScrollView 定位

ios - 像 Chanel 应用程序一样自定义 Collection View 布局

.net - .NET 上 x86/x64/ia64 内存模型之间的差异

ios - 以编程方式设置自动布局约束

ios - NSURLSession 忽略 NSURLSessionConfiguration 缓存策略

objective-c - 捕捉 iPhone 的自动更正建议

c++ - 从 32 位进程调用 64 位 dll 上的 LoadLibrary