webViewDidFinishLoad не работает для двух uiwebviews в одном представлении - PullRequest
1 голос
/ 24 декабря 2011

Я добавляю два uiwebviews в мой Nib, и они загружают один и тот же HTML в словарь документов.

Он дважды входит в webViewDidFinishLoad, но изменился только один стиль веб-просмотра ..

Спасибо, вот мой код:

- (void)viewDidLoad{
NSString *_pagesPath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/chapter5.htm"];

web1.delegate = self;

[web1 loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:_pagesPath]]];


web2.delegate = self;
[web2 loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:_pagesPath]]];

}

- (void) webViewDidFinishLoad:(UIWebView*)webView{    
NSString *varMySheet = @"var mySheet = document.styleSheets[0];";

NSString *addCSSRule =  @"function addCSSRule(selector, newRule) {"
"if (mySheet.addRule) {"
"mySheet.addRule(selector, newRule);"                                // For Internet Explorer
"} else {"
"ruleIndex = mySheet.cssRules.length;"
"mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"   // For Firefox, Chrome, etc.
"}"
"}";

NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;line-height:3.5')"];
NSString *insertRule3 = [NSString stringWithFormat:@"addCSSRule('body', 'background:#e0d9ca;')"];

[webView stringByEvaluatingJavaScriptFromString:varMySheet];
[webView stringByEvaluatingJavaScriptFromString:addCSSRule];

[webView stringByEvaluatingJavaScriptFromString:insertRule2];
[webView stringByEvaluatingJavaScriptFromString:insertRule3];

}

1 Ответ

0 голосов
/ 24 декабря 2011

Я не вижу ничего плохого. Но ваши два UIWebView одинаковы, в этом случае вам следует создать подкласс UIWebView. Создание подклассов - хороший способ повторного использования, имеет больше смысла и, самое главное, может решить вашу проблему.

Кстати, вы должны использовать self.web1 или self.web2 для доступа к своим свойствам через аксессор. Вы не должны использовать экземпляр vars (web1, web2) вне средства доступа. Вы бы лучше

@synthesize web1 = _web1;

Подробнее читайте: Вопрос о @ synthesize

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...