3

我发现 iOS 4 和 iOS 5 之间的差异导致我的代码出错。当我创建一个UIWebView时,它还创建了一个名为UIWebBrowserView577 x 533 的框架的子视图。然后,我在其中加载了一个 PDF 文件,UIWebView这里 iOS 4 和 5 之间存在差异。在 iOS 4 中,当处理到达方法时“webViewDidFinishLoad:”,UIWebBrowserView仍然存在帧 577 x 2947(我想是 pdf 的大小),在 iOS 5 中,UIWebBrowserView不再存在,在它的地方有一个UIWebPDFView帧 577 x 533(我在这里期望尺寸为 577 x 2947 的帧)。最后,我引发了一个事件,并且视图符合我的预期(UIWebBrowserViewiOS 4 中的帧为 577 x 2947,iOS 5UIWebPDFView中的帧为 577 x 2947.4)。

问题是当加载pdf文件时,当处理到达“webViewDidFinishLoad:”方法时,我想在PDF文件中添加注释,但在这个方法UIWebPDFView中还没有pdf的实际大小。如果我只是把笔记放在那里,它们就不会出现。在 iOS 4 中它可以工作,但在 iOS 5 中它不再工作了。任何人都可以帮助我如何将注释放在 webview 的加载上?

这是显示iOS和日志下方的不同行为的代码。

ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIWebViewDelegate, UIGestureRecognizerDelegate>
{
    IBOutlet UIView *view;
    IBOutlet UIWebView * webView;
}

- (void)handleTap:(UITapGestureRecognizer *)recognizer;

@end

ViewController.m
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [webView setUserInteractionEnabled:YES];
    [view bringSubviewToFront:webView];

    //Load view with a pdf file
    NSString *path = [[NSBundle mainBundle] pathForResource:@"pdf_teste" ofType:@"pdf"];
    NSData *pdfData = [NSData dataWithContentsOfFile:path];
    [webView loadData:pdfData MIMEType:@"text/pdf" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];

    //Log
    NSLog(@"On viewDidLoad: %@", [[webView viewForZoomingInScrollView:(UIScrollView *)[[webView subviews] objectAtIndex:0]] description]);

    //Add a tap gesture recognizer
    UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    recognizer.delegate = self;
    [webView addGestureRecognizer:recognizer];
}

- (void)webViewDidFinishLoad:(UIWebView *)view
{
    //Log
    NSLog(@"On webViewDidFinishLoad: %@", [[webView viewForZoomingInScrollView:(UIScrollView *)[[webView subviews] objectAtIndex:0]] description]);

    //I’d like to insert the saved notes here.

}

- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
    //Log
    NSLog(@"On Tap Event: %@", [[webView viewForZoomingInScrollView:(UIScrollView *)[[webView subviews] objectAtIndex:0]] description]);
}

@end

日志:

iOS 5.1

2012-03-30 14:24:28.075 WebViewTest[173:707] 在 vi​​ewDidLoad: >

2012-03-30 14:24:28.823 WebViewTest[173:707] 在 webViewDidFinishLoad 上:> 3 月 30 日 14:24:29 iPad2-de-ASDS WebViewTest[173]:OPDILG+TT857o00:FT_Select_Charmap 失败:错误 38。

2012-03-30 14:24:47.167 WebViewTest[173:707] 平移事件:>

iOS 4.3.5

2012-03-30 14:13:46.285 WebViewTest[823:607] 在 vi​​ewDidLoad: >

2012-03-30 14:13:47.049 WebViewTest[823:607] 在 webViewDidFinishLoad 上:> 3 月 30 日 14:13:47 BNBConsult01 WebViewTest[823]:OPDILG+TT857o00:FT_Select_Charmap 失败:错误 38。

2012-03-30 14:14:48.199 WebViewTest[823:607] 平移事件:>

4

0 回答 0