Otrzymuję biały błysk, gdy mój WebView przechodzi pomiędzy adresami URL.Nawigacja Cocoa WebView biały flash
Innymi słowy, WebView jest w stanie nieodzyskanym pomiędzy nawigacją i pokazuje tylko kolor tła aplikacji.
Jakieś pomysły, jak to obejść?
Otrzymuję biały błysk, gdy mój WebView przechodzi pomiędzy adresami URL.Nawigacja Cocoa WebView biały flash
Innymi słowy, WebView jest w stanie nieodzyskanym pomiędzy nawigacją i pokazuje tylko kolor tła aplikacji.
Jakieś pomysły, jak to obejść?
Miałem ten sam problem, (głównie) naprawiłem go, wprowadzając trzy metody delegatów, aby wyłączyć flush w oknie za @ justinvoss's suggestion on Twitter.
Trzeba być bardzo ostrożnym przy wyłączeniu równo na oknie ponieważ jeśli pozostawić ją wyłączoną cała aplikacja wydaje się zamrażać, więc upewnij się, że nie robią tego wielokrotnie i układać je (-webView:didCommitLoadForFrame:
jest udokumentowane czasami nazwać kilka razy dla pojedynczego obciążenia) i przypadkowo zostawić okno zamrożone
@implementaton ViewControllerClass {
BOOL _windowFlushDisabled;
}
- (void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame;
{
if (!_windowFlushDisabled && sender.window) {
[sender.window disableFlushWindow];
_windowFlushDisabled = YES;
}
}
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame;
{
if (_windowFlushDisabled) {
[sender.window enableFlushWindow];
[sender.window flushWindowIfNeeded];
_windowFlushDisabled = NO;
}
}
- (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame;
{
[self webView:sender didFinishLoadForFrame:frame]; // re-enable flushing
}
@end
sporadycznie wciąż widzę błyski, moja obecna teoria mówi, że ta funkcja zwrotna jest wtedy, gdy wszystkie zasoby są ładowane ale że rysunek niekoniecznie jest skończone. Szkoda, że to jedyny oddzwaniany telefon.
Jeśli jesteś na 10,6 lub lepiej można pracować wokół nich za pomocą tej sztuczki aby opóźnić równo umożliwienie aż do końca imprezy:
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame;
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
if (_windowFlushDisabled) {
[self.libraryDocument.windowForSheet enableFlushWindow];
[self.libraryDocument.windowForSheet flushWindowIfNeeded];
_windowFlushDisabled = NO;
}
}];
}
Czy adresy ładowanego lokalnym lub zdalnym? W jaki sposób Safari obsługuje te same linki? Czy włączono obsługę JavaScript w widoku WebKit? –
To flash pomiędzy lokalnym adresem URL i zdalnym adresem URL. Uchwyt przeglądarki Safari jest natychmiastowy. Tak, JavaScript jest włączony - WebView nie jest renderowany podczas pobierania nowej strony. –