0

本のページを使用UIPageViewControllerして表示するための ePub リーダー アプリケーションを開発したいと考えています。UIWebViewそのため、JavaScript 文字列を使用してオフセットを実行することで、別の章からページを作成できます。

UIPageViewControlerDataSource delegate問題は、どうすれば正しい方法で作業を実装できるかということです。表示するページを準備するときは、まだ画面上にある場合にのみ機能するUIWebViewメソッドとメソッドを使用する必要があります。ePub チャプター ページングにリンクされた微積分を作成するための基になるアンダーを作成しようとしましたが、ロードされたコンテンツをページにドラッグすることはできません。UIWebView delegatewebViewwebViewpageViewController

iBooksまたは同じアプリでどのように実装されているか知っている人はいますか?

4

1 に答える 1

1

1つの簡単な解決策は次のとおりです。

  • サブクラス、およびプロトコルUIPageViewControllerに準拠させ、オーバーライドでデータソースとして設定しますUIPageViewControllerDataSourceUIWebViewDelegateself-viewDidLoad
  • pageViewController:viewControllerAfterViewController:および(UIPageViewControllerDataSource プロトコル メソッド) を実装して、表示するデータを含むpageViewController:viewControllerBeforeViewController:新しいを返すようにします。UIViewControllerUIWebView

    - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
    {
        UIViewController *vc = [[UIViewController alloc] init];
        UIWebView *webview = [[UIWebView alloc] init];
        webview.delegate = self;
    
        // Here you can call - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
        // to load your web page as you need
    
        vc.view = webview;
    
        return vc;
    }
    

もちろん、コード スタブを完成させる必要があります。次のページと前のページを返すことができるように、viewController を区別するメカニズムをセットアップする必要があります (つまり、pageNumberプロパティを宣言する UIPageViewController サブクラスでそれを行いますが、それを行うよりエレガントな方法があると確信しています..)

于 2013-02-02T13:22:01.157 に答える