【问题标题】:How to jump pdf page in UIWebView?如何在 UIWebView 中跳转 pdf 页面?
【发布时间】:2011-11-17 00:35:24
【问题描述】:

我正在尝试逐页滚动 pdf 文件

这是我的代码

-(void)viewDidLoad{

NSString *path = [[NSBundle mainBundle] pathForResource:@"myPdffile" ofType:@"pdf"];

NSURL *url = [NSURL fileURLWithPath:path];

NSURLRequest *urlrequest = [NSURLRequest requestWithURL:url];

[webview loadRequest:urlrequest];

webview.scalesPageToFit = YES;

[super viewDidLoad];

}

//goto next page

-(IBAction)nextpage{

        [webview stringByEvaluatingJavaScriptFromString: ?????? ];
}

//goto previous page

-(IBAction)prevpage {

       ?????
}

stringByEvaluatingJavaScriptFromString 后面应该放什么?

我是否将相同的代码放在“prevpage”中?

谢谢!

【问题讨论】:

标签: objective-c ios ios4 uiwebview


【解决方案1】:

在 iOS 5 中可以使用该语句进行页面跳转

[[webView scrollView] setContentOffset:CGPointMake(0,y) animated:YES];

在iOS 5以下你可以使用这个语句

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0.0, %f)", y]];

y 是你要跳跃的高度。

我正在为下一页和上一页编写一些示例代码

-(IBAction) nextPage: (id) sender
{
    if (currentPage < numberOfPages) 
    {
        float y =  pageHeight * currentPage++;

        if (isIOSAbove4) 
        {
            [[webView scrollView] setContentOffset:CGPointMake(0,y) animated:YES];
        }
        else
        {
            [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0.0, %f)", y]];
        }
    }
}

上一页:

-(IBAction) prevPage: (id) sender
{   
    if (currentPage - 1)
    {
        float y = --currentPage * pageHeight - pageHeight;
        if (isIOSAbove4) 
        {
            [[webView scrollView] setContentOffset:CGPointMake(0,y) animated:YES];
        }
        else
        {
            [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.scrollTo(0.0, %f)", y]];
        }
    }
}

在上面的示例代码中是IOSAbove4是在pch文件中定义的

#define isIOSAbove4 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0)

希望以上代码能解决您的问题

【讨论】:

  • 我假设您有一个 pageHeight 常量。我发现 pageHeight 会发生变化,甚至相对于常量 PDFRect 也会发生变化,并且会导致页面位置计算在较长的文档中变得更糟。此解决方案还假设文档内的页面都具有相同的方向。
  • 注意:这应该在 viewWillAppear 之后调用。 viewDidAppear 可以解决问题。
【解决方案2】:

我不相信有办法做到这一点,在其他网络浏览器/PDF 查看器中,您可以使用 ?page=6 的查询字符串参数,但 WebKit PDF 引擎似乎不支持

【讨论】:

  • 我自己也有同样的问题!由于页面没有呈现为 HTML,因此对它们执行 JS 查询不起作用
【解决方案3】:

我遇到了类似的问题,在选择 tableView(缩略图 tableview)中的单元格时,我必须导航到 PDF 中的特定页面(使用 UIWebView 显示)。

所以我写了一段代码,可以让你滚动到 PDF 中的特定页面。即使 PDF 处于缩放状态,这也有效。您可以找到代码here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    相关资源
    最近更新 更多