菜鸟教程小白 发表于 2022-12-12 19:36:37

ios - 使用 UIWebView 显示 PDF 不工作


                                            <p><p>所以,我意识到有很多关于使用 UIWebView 在应用程序(在 iPad 上)中显示 PDF 的问题。我已经查看了我能找到的所有内容,但我似乎找不到任何满意的地方。</p>

<p>我正在尝试做的是非常基本的,所以我真的不知道为什么它不起作用。我需要做的就是在 UIWebView 中显示本地存储的 PDF。从本质上讲,我得到的只是黑屏。如果有人可以看一下我的代码,我将不胜感激。谢谢。</p>

<pre><code>   - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Segue to the materials screen.

    if () {
      PDFViewController *pdfViewController = ;

      NSIndexPath *path = ;
      int row = ;
      Lesson *selected = ;
      pdfViewController.selectedLesson = selected ;

    //Start Load PDF in UIWebView

      pdfViewController.pdfWindowTitle.title = selected.titleAndSubtitle;

      pdfViewController.pdfWebView = [ initWithFrame:CGRectMake(0, 0, 1024, 704)];

      NSString *urlAddress = [ pathForResource:@&#34;moonlightSonataFirstMovement&#34; ofType:@&#34;pdf&#34;];
      NSURL *url = ;

      NSURLRequest *requestObj = ;

      ;

    //End Load PDF

    }
}
</code></pre>

<p>我检查了我的对象是否被正确地传递到场景中(确实如此),以及我是否收到了正确的请求;我得到:</p>

<p><code><NSURLRequest file://localhost/Users/MYCOMPUTER/Library/Application%20Support/iPhone%20Simulator/5.0/Applications/AB161E57-D942-44C2-AA75-030087820BED/iLessons%20Piano.app/moonlightSonataFirstMovement。 pdf></code></p>

<p>另外,我收到此错误消息:</p>

<pre><code>iLessons Piano DiskImageCache: Could not resolve the absolute path of the old directory.
</code></pre>

<p>此外,由于某种原因,NSLog 消息被打印了 8 次。</p>

<p>我唯一能想到的是,我在上一个场景中调用 prepareForSegue 函数时需要做这个加载。或者使用其他方法,如 Quartz。但我宁愿使用 UIWebView,因为我真正需要做的就是显示并允许滚动。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><blockquote>
<p>DiskImageCache: Could not resolve the absolute path of the old
directory.</p>
</blockquote>

<p>这不是应用崩溃的真正原因。可以通过在 Storyboard 中分配 View 来修复此警告。它似乎已经连接,但它是灰色的。所以重新赋值就可以了。</p>

<p>对我来说真正的问题是 PDF 图像为 300 DPI,加载应用程序花费的时间太长。由于调试器可以防止应用程序崩溃,因此它似乎可以正常工作,但是如果没有调试器,加载将花费太长时间,并且会导致超时崩溃。 </p>

<p>您可以做一些事情。您可以缩小 PDF 的比例,这可能是一件好事,因为旧设备速度更慢,而且支持这些设备也很好。但真正解决它的是延迟 PageView 初始化。这是我所做的:</p>

<p>在 RootViewController 中,我将代码从 <code>viewDidLoad</code> 移到了新函数 <code>setupPageViewer</code>。</p>

<p>并把它放在 <code>viewDidLoad</code> 中:</p>

<blockquote>
<p>;</p>
</blockquote>

<p>延迟 0.0 意味着它将在下一帧中处理,这使您有机会显示加载指示器。</p>

<p>享受吧!</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 UIWebView 显示 PDF 不工作,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/9606646/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/9606646/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 UIWebView 显示 PDF 不工作