iOS命名粘贴板在实际设备上找不到

时间:2014-08-03 23:16:27

标签: ios objective-c ipad pasteboard

我在iPad上的应用程序间通信存在问题(直到最近)一直有效。我正在使用http://enharmonichq.com/sharing-data-locally-between-ios-apps/中的标准粘贴板代码,这是一个很好的教程并且运行良好。

我的问题是,现在我的“查看器”应用在打开时没有收到粘贴板。

代码:

+(void)handleSendPasteboardDataURL:(NSURL *)sendPasteboardDataURL
                 completionHandler:(ENHAppDataSharingHandler)completionHandler;
{
    NSString *query = [sendPasteboardDataURL query];
    NSString *pasteboardName = [sendPasteboardDataURL fragment];
    NSAssert2(([query isEqualToString:kReadPasteboardDataQuery] && pasteboardName),
              @"Malformed or incorrect url sent to %@. URL: %@",
              NSStringFromSelector(_cmd), sendPasteboardDataURL);

    AppDataPackage *dataPackage = nil;
    NSError *error = nil;

    NSString *pasteboardType = kAppDataPackageUTI;
    UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:pasteboardName create:NO];

    if (pasteboard)
    {
        NSData *data = [pasteboard dataForPasteboardType:pasteboardType];
        if (data)
        {
            dataPackage = [AppDataPackage unarchivePackageData:data];
        }
        else
        {
            NSDictionary *errorInfoDictionary = @{NSLocalizedDescriptionKey: [NSString stringWithFormat:
                                                                              @"%@ %@", NSLocalizedString(@"No data found on pasteboard with name:", nil),
                                                                              pasteboardName]};
            error = [NSError errorWithDomain:AppDataSharingErrorDomain
                                        code:ENHAppDataSharingErrorTypeNoDataFound
                                    userInfo:errorInfoDictionary];
        }
        [pasteboard setData:nil forPasteboardType:pasteboardType];
        [pasteboard setPersistent:NO];
    }
    else
    {
        NSDictionary *errorInfoDictionary = @{NSLocalizedDescriptionKey:
                                                  [NSString stringWithFormat:@"%@ %@",
                                                   NSLocalizedString(@"No pasteboard found for name:", nil), pasteboardName]};
        error = [NSError errorWithDomain:AppDataSharingErrorDomain
                                    code:ENHAppDataSharingErrorTypeNoPasteboardForName
                                userInfo:errorInfoDictionary];
    }
    completionHandler(dataPackage, error);
}

以前在设备上运行良好,但在模拟器上运行良好。但现在在设备上进行测试时,呼叫......

[UIPasteboard pasteboardWithName:pasteboardName create:NO];

...失败,粘贴板为零。 (粘贴板名称有效)

正如我所说,这在模拟器上运行正常但在设备上没有。

所以我的问题是,是否有其他人有相同问题的经验? 有什么建议吗?

我的源应用程序正在运行,因为其他粘贴板'测试'应用程序可以接收数据并在设备上工作。这只是我的主要接收应用程序未能得到有问题的粘贴板。

我对这个问题有点了解。

这是运行iOS7.1.2并在xcode 5.1.1上开发

由于

0 个答案:

没有答案