1

UIDocumentInteractionController に問題があります。presentOptionsMenuFromBarButtonItem を使用して、ポップオーバーを正しく表示できます。

ユーザーが barbuttonitem に触れると、次のメソッドが起動します。

- (IBAction)share:(id)sender {

   if (docIntController) {
      [docIntController dismissMenuAnimated:NO];
      docIntController = nil;
   }
   NSString *fileURL = [(Documents *)(self.detailItem) url];
   NSArray *subStrings = [fileURL componentsSeparatedByString:@"/"];
   NSString *filePath = [[self documentsDirectory] stringByAppendingPathComponent:[subStrings lastObject]];

   docIntController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:filePath]];
   docIntController.delegate = self;
   docIntController.UTI = @"com.adobe.pdf";

   [docIntController presentOptionsMenuFromBarButtonItem:sender animated:YES];

}

とにかく、ユーザーが印刷ボタンに触れてからもう一度バーボタンに触れても、次の画像でわかるように、印刷オプション メニューは消えません。

ここに画像の説明を入力

さらに、ユーザーが再度印刷オプションに触れると、オプション ポップオーバーが消え (古い印刷オプションではなく)、別の印刷オプション ポップオーバーが作成されます。

実際、ユーザーがポップオーバーの外側に触れて閉じると、最初のものだけが閉じられ、下に示すように古いものは空になります。

ここに画像の説明を入力

4

1 に答える 1

1

私はUIPrintInteractionControllerでdismissAnimatedメソッドを呼び出すことでこれを解決しました

- (IBAction)share:(id)sender {
    [[UIPrintInteractionController sharedPrintController] dismissAnimated:NO];

    // remainder of share method code
}

却下コード (UIPrintInteractionController と DocumentInteractionController の両方) を別のメソッドに分割し、単純に共有メソッドで呼び出すことができます。iPad のポートレート モードで印刷メニューが消えないという問題が発生したため、それを閉じる呼び出しをviewWillDisappearに追加しました。

于 2013-09-17T16:48:27.897 に答える