0

我想开发一个使用UIPageViewControllerUIWebView显示书页的 ePub 阅读器应用程序。因此,我可以通过使用 JavaScript 字符串执行偏移来制作不同章节的页面。

问题是如何UIPageViewControlerDataSource delegate以正确的方式实施工作?当我准备一些页面来显示时,我应该使用只有在屏幕上才有效的UIWebView方法和方法。我试图在基础下制作与 ePub 章节分页链接的微积分,但我无法在页面上拖动加载的内容。UIWebView delegatewebViewwebViewpageViewController

有谁知道它是如何在 iBooks 或相同的应用程序中实现的?

4

1 回答 1

1

一种简单的解决方案可能是:

  • 子类UIPageViewController,使其符合UIPageViewControllerDataSourceUIWebViewDelegate协议并在覆盖中设置self为数据源-viewDidLoad
  • 实现pageViewController:viewControllerAfterViewController:pageViewController:viewControllerBeforeViewController:(UIPageViewControllerDataSource 协议方法),以便它们返回一个UIViewController包含UIWebView显示您的数据的新的。

    - (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;
    }
    

当然你必须完成代码存根。您应该设置一种机制来区分 viewControllers 以便能够返回下一页和上一页(即,我使用 UIPageViewController 子类声明pageNumber属性来做到这一点,但我相信有更优雅的方法可以做到这一点......)

于 2013-02-02T13:22:01.157 回答