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 のフレームが必要です)。最後に、イベントを発生させ、ビューは期待どおりです ( UIWebBrowserView
iOS 4 ではフレーム 577 x 2947、UIWebPDFView
iOS 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] パン イベント: >