2

我正在尝试通过UIDocumentInteractionController和显示打开方式菜单presentOpenInMenuFromBarButtonItem。这不会调出UIDocumentInteractionController屏幕。奇怪的是,如果我将“ OpenIn”替换为“”,Options那么它将按预期工作。

是什么导致presentOpenInMenuFromBarButtonItem不工作?谢谢你。

    NSString *fileName = [NSString stringWithFormat:@"%@text.txt", NSTemporaryDirectory()];
    [self.textToShare writeToFile:fileName
                       atomically:NO
                         encoding:NSUTF8StringEncoding
                            error:nil];

    NSURL *textFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"text.txt"]];

    self.openInController = [UIDocumentInteractionController interactionControllerWithURL:textFileURL];
    self.openInController.delegate = self;
    [self.openInController presentOpenInMenuFromBarButtonItem:self.buttonToPresentFrom animated:YES]; //replacing OpenIn with Options causes it to appear
4

1 回答 1

3

问题是 presentOpenIn... 仅在安装了可以打开您发送的文件的应用程序时才显示菜单。iOS Simulator 没有任何可以打开 .txt 文件的应用程序,因此它似乎无法正常工作。如果你在物理设备上运行,它工作得很好。

我决定添加这个以获得更好的行为:

BOOL didPresentOpenIn = [self.openInController presentOpenInMenuFromBarButtonItem:self.buttonToPresentFrom animated:YES];
    if (!didPresentOpenIn) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Apps Available"
                                                        message:@"You do not have any apps installed that can open text files."
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];
    }
于 2014-05-14T19:34:13.480 回答