두 개의 UIWebView가 있습니다. 하나는 일반 파일을 처리하고 다른 하나는 PDF를 처리하는 UIWebView입니다 (다른 웹보기의 상단에 오버레이로 열림). 내 응용 프로그램 몇 가지 문제가 발생 pdfViewer.delegate = self;
동일한 ViewController에서 여러 UIWebView를위한 대리인 설정
//Options for webView
webView.delegate = self;
webView.scalesPageToFit = YES;
for (id subview in webView.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).bounces = NO;
//Options for pdfViewer
pdfViewer.delegate = self;
pdfViewer.scalesPageToFit = YES;
for (id subview in pdfViewer.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).bounces = NO;
라인 :
두 webviews는 다음과 같이 설정합니다. 나는 webViewDidFinishLoad
을 사용하는 대리자 메서드를 가지고 있으므로 self
두 뷰 중 delegate
이 필요합니다. 설정되지 않은 경우, 즉 주석 처리합니다. 보기에서 PDF가로드되지만 webViewDidFinishLoad
은 예상대로 실행되지 않습니다. 그러나 회선을 다시 활성화하면 PDF가보기에 전혀로드되지 않습니다. 어떤 종류의 충돌이 있습니까? UIWebViews
delegate = self
을 복수 할당 할 수 있습니까?
업데이트 :
이#import "MyViewController.h"
@implementation MyViewController
@synthesize webView;
//these two just appear to show the page is loading.
@synthesize loadingView;
@synthesize linkLoadView;
//pdfViewer is contained within topView
@synthesize topView;
@synthesize pdfViewer;
- (void)viewDidLoad {
[super viewDidLoad];
linkLoadView.alpha=0.0;
[topView removeFromSuperview];
//Options for
webView.delegate = self;
webView.scalesPageToFit = YES;
for (id subview in webView.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).bounces = NO;
//Options for
//pdfViewer.delegate = self;
pdfViewer.scalesPageToFit = YES;
for (id subview in pdfViewer.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).bounces = NO;
NSURL *filePath = [NSURL URLWithString:@"*webaddress*/index.html"];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:filePath];
[webView loadRequest:requestObj];
}
- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {
/* Add Content Loading Banner */
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
[self.view addSubview:linkLoadView];
linkLoadView.alpha = 1.0;
}
/* Handle PDF Opening */
NSURL *url = [request URL];
NSString *urlString = [url absoluteString];
if([urlString rangeOfString:@".pdf"].location == NSNotFound){
return true;
} else {
NSURL *filePath = [NSURL URLWithString:urlString];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:filePath];
[pdfViewer loadRequest:requestObj];
[self.view addSubview:topView];
[self.view addSubview:linkLoadView];
return false;
}
}
- (void) webViewDidFinishLoad:(UIWebView *)theWebView{
NSLog(@"Fired");
}
@end
webViewDidFinishLoad에서 무슨 일이 벌어지고 있습니까? – mbehan
@mbehan 그것은 단지 NSLog 일뿐입니다. webViewDidFinishLoad가 pdfViewer에 대해 실행되지 않는다고 webView가 이미로드 되었기 때문에 그렇게 생각합니까? –