2017-11-09 32 views
0

ファイルシステムからpdfファイルを開く必要があります。 私はファイルへのパスを取得する方法を知っていますが、私のIPhoneはそれを開けません。XamarinフォームIOSオープンPDF

私は次のコードレンダラを使用します。ここでは

using Xamarin.Forms; 
using IdokladX.Services; 
using UIKit; 
using Foundation; 
[assembly: Dependency(typeof(IdokladX.iOS.Services.PdfViewer))] 
namespace IdokladX.iOS.Services { 
public class PdfViewer:IPdfViewer { 

    public void OpenPdf(string filename) 
    { 
     FileWorker fl = new FileWorker(); 

     if (fl.Exists(filename)) 
     { 
      string strPfad = fl.GetFilePath(filename); 

      var viewer = UIDocumentInteractionController.FromUrl(NSUrl.FromFilename(strPfad)); 
      var controller = GetVisibleViewController(); 
      viewer.PresentOpenInMenu(controller.View.Frame, controller.View, true); 
     } 
    } 
    private UIViewController GetVisibleViewController(UIViewController controller = null) 
    { 
     controller = controller ?? UIApplication.SharedApplication.KeyWindow.RootViewController; 

     if (controller.PresentedViewController == null) 
      return controller; 

     if (controller.PresentedViewController is UINavigationController) 
     { 
      return ((UINavigationController)controller.PresentedViewController).VisibleViewController; 
     } 

     if (controller.PresentedViewController is UITabBarController) 
     { 
      return ((UITabBarController)controller.PresentedViewController).SelectedViewController; 
     } 

     return GetVisibleViewController(controller.PresentedViewController); 
    } 
    } 
} 

FileWorkerは、それが存在する場合は、ファイルをチェック/削除/保存するためのメソッドを含むクラスです。 どうしたのですか? Info.plistファイルにファイルタイプPDFを追加しました。

enter image description here

は間違っては何ですか?私はWebViewを使用するためのアドバイスをしないでください、私は別のプログラムを介してPDFファイルを開く必要があります。

+0

'PresentOpenInMenu()'をトリガするときにポップアップが表示されないのですか? 他のアプリからpdfファイルを開くことはできますか? –

+0

他のpdfビューアアプリケーションをインストールしたデバイスでテストすることができます。 –

+0

@Kevinはアドバイスをありがとう!確かに、私のシミュレータにはPDFビューアのアプリはありませんが、私はサファリを持っています...それを開くべきだと私は間違っていますか? – ManOfWar

答えて

1

参考:

presentOpenInMenu(from:in:animated:)のためのマニュアルを参照してください:

文書を開くサポート登録済みのアプリケーションが存在しない場合は、文書の相互作用コントローラはメニューが表示されません。

ソリューション:

テスト「開く...」あなたのデバイス上のpdfファイルを(たとえば、iBookは、ノート、クロムなどなど開くことができますいくつかのアプリがありますことを確認してくださいon)。それ以外の場合、メニューは表示されません。

お知らせ:

あなたは、あなたは自分のファイルを開くには、他のアプリが必要な場合は、PDFのためDocument Typeを追加する必要はありません。 Document Typeは、他のアプリがpresentOpenInMenuをトリガーしたときに、他のアプリのファイルを開くための[Open in ...]メニューでアプリを表示するために使用されます。

+0

@ManOfWar、私の答えが役に立ったら、それを受け入れることができますか?それは私にとって重要です!ありがとう! –

関連する問題