3

iOS 4 と iOS 5 の違いが原因でコードにエラーが発生することがわかりました。を作成すると、サイズ 577 x 533 のフレームでUIWebView呼び出されるサブビューも作成されUIWebBrowserViewます。次に、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、UIWebPDFViewiOS 5 ではフレーム 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] viewDidLoad: >

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] viewDidLoad: >

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