У меня есть два UIWebView, один для обработки обычных файлов и один для обработки PDF-файлов (который открывается как наложение поверх другого веб-представления).
Оба веб-просмотра настроены, как показано ниже:
//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;
строка pdfViewer.delegate = self;
вызывает у моего приложения некоторые проблемы.У меня есть метод делегата, который я использую webViewDidFinishLoad
, поэтому мне нужно, чтобы delegate
обоих представлений было self
.Если он не установлен, то есть я его комментирую.Файл 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