8

サイトのラッパーアプリケーションを開発しています。基本的に、UIWebViewでモバイル版のサイトを開きます。サイト上のいくつかのリンクはPDFを指しています。

同じサイトをSafariで開き、PDFへのリンクをタップすると、「OpeniniBooks」の付いた素敵な黒いストライプがPDFの上に表示されます。下の写真のように:

ここに画像の説明を入力してください

アプリに同じ外観のストライプを実装するにはどうすればよいですか?

編集:

半透明の背景に黒いボタンを作成する方法については質問していません。

ワークフロー全体を再現することに興味があります。

  • ユーザーがPDFに移動します
  • iBooksアプリ(またはその他のPDFビューア)がインストールされている場合にのみ、ストライプ(表示)がポップアップ表示されます。
  • ポップアップのボタンをタップすると、ドキュメントがそのアプリに転送され、アプリが開きます。
4

2 に答える 2

24

iBooksがインストールされているかどうかを確認するには、次の電話番号に電話してください。

BOOL iBooksInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"ibooks://"]];

以下を使用して、アプリケーションのリストを表示できます(なぜiBooksのみに制限するのですか?;))。

//use the UIDocInteractionController API to get list of devices that support the file type
NSURL *pdfURL = // your pdf link.
UIDocumentInteractionController *docController = [UIDocumentInteractionController interactionControllerWithURL:pdfURL];

//present a drop down list of the apps that support the file type, click an item in the list will open that app while passing in the file.
 [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];

PDFを読み取るアプリを作成しない限り、これはiOSシミュレーターでは機能しないことに注意してください。

PDFをiBooksで開くオプションのみを提供したい場合は、ファイルのURLを@ "ibooks://"スキームまたはiBooksが提供する他の2つのスキームのいずれかに追加してみてください(これはiBookStoreの本で機能しますが、@ "itms-books://"および@ "itms-bookss://"である他のURLでも機能するかどうかはわかりません。次に、次のようなことを行うことができます。

NSURL *iBooksURLScheme = [NSURL URLWithString:@"ibooks://"];
NSString *fileURLString = // your file URL as *string*
NSURL *finalURL = [iBooksURLScheme URLByAppendingPathComponent:fileURLString];

[[UIApplication sharedApplication] openURL:finalURL];
于 2012-11-16T11:49:18.947 に答える
1

(以前の回答にはコードが含まれていなかったため、再度回答しました。お詫びします)

私の問題を解決する解決策については、ここで素晴らしい例を見つけました。

誰かに役立つ場合に備えて、ここにカットアンドペーストしました。Absoluteripple.comへの完全なクレジット

クラスの名前がViewControllerであるとすると、ViewController.hファイルでは次のようになります。        

    
@interface ViewController:UIViewController
            {{
                UIDocumentInteractionController * docController;
            }

ViewController.mに次のメソッドを追加します。//-UIDocumentInteractionコントローラーをセットアップし、そのデリゲートをselfに設定して、コールバックイベントを処理できるようにします。        

- (UIDocumentInteractionController *) setupControllerWithURL:(NSURL *)fileURL
                                               usingDelegate:(id <UIDocumentInteractionControllerDelegate>)         interactionDelegate {
    
            UIDocumentInteractionController *interactionController =
            [UIDocumentInteractionController interactionControllerWithURL:fileURL];
            interactionController.delegate = interactionDelegate;
    
            return interactionController;
            }

               //-ここでのキーインスタンスメソッドはpresentOptionsMenuFromBarBUttonItemです//-ここでは_btnActionsと呼ばれるBarButtonItemがあると想定されています        

    

    -(void)showOptionsMenu
            {{
                NSURL * fileURL = [NSURL fileURLWithPath:@ "THE_FILE_URL_PATH"];
                docController = [self setupControllerWithURL:fileURL
                                       usingDelegate:self];
                bool didShow = [docController presentOptionsMenuFromBarButtonItem:_btnActions
                                                                 アニメーション:はい];
                if(!didShow){
                        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@ ""
                                                            message:@"申し訳ありません。このデバイスに適切なアプリが見つかりません。"
                                                           デリゲート:nil
                                                  cancelButtonTitle:@ "OK"
                                                  otherButtonTitles:nil];
                        [アラートショー];
                }
            }
  1. ファイルを送信できるアプリを表示する場合に、上記を呼び出すメソッドを追加します。この例では、UIBarButtonが次のIBActionに接続されています。    
    -(IBAction)ActionButtonClicked:(id)sender {
            [自己showOptionsMenu];}

それだ。ボタンをクリックすると、ファイルを送信できるアプリ(存在する場合)を示すアクションシート(すべてAppleのUIDocumentInteractionControllerクラスを使用)が表示されます。

オプションで、次のデリゲートメソッドを実装できます。

- (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application

- (void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application

- (void)documentInteractionControllerDidDismissOpenInMenu:(UIDocumentInteractionController *)controller
于 2013-06-17T01:21:18.773 に答える