UIWebView'ın kendisini yeniden çizmesine neden olacak teknikler var mı? UIWebView ve UIScrollView üzerinde setNeedsDisplay
ve setNeedsLayout
denedim, ancak çalıştı.UIWebView'ı yeniden çizmek için zorlanıyor musunuz?
cevap
Soruyu tam olarak cevapladıktan sonra doğru buldum. Anahtar, kendilerini yeniden çizmek için UIWebView
'un scrollView
'un alt görünümlerini, özellikle de UIWebBrowserView
'u anlatmaktı.
- (void) forceRedrawInWebView:(UIWebView*)webView {
NSArray *views = webView.scrollView.subviews;
for(int i = 0; i<views.count; i++){
UIView *view = views[i];
//if([NSStringFromClass([view class]) isEqualToString:@"UIWebBrowserView"]){
[view setNeedsDisplayInRect:webView.bounds]; // Webkit Repaint, usually fast
[view setNeedsLayout]; // Webkit Relayout (slower than repaint)
// Causes redraw & relayout of *entire* UIWebView, onscreen and off, usually intensive
[view setNeedsDisplay];
[view setNeedsLayout];
// break; // glass in case of if statement (thanks Jake)
//}
}
}
Ben UIWebBrowserView
'ın sınıf adı değişmiyor üzerinde beyanı güvenli olması ve önlemek için eğer bağımlılığımızı ortadan yorumladı ettik. Bu olmadan, bu bakışta gerçekten bir sorun olmayan (hiçbir önemli ek yükün oluşmadığı) ancak her zaman değişebilen, scrollview'deki tüm UIViews'lere rastlar.
DÜZENLEME: Bazı durumlarda
, JavaScript aşağıdaki pasajı aynı/benzer şeyi başarmak olacaktır:
window.scrollBy(1, 1); window.scrollBy(-1, -1);
Sen UIScrollView
'ın contentOffset
çok bunu düşünmek istiyorum, ama Bu benim deneyimimde her zaman böyle değil - bazı nedenlerden dolayı window.scrollTo
bu konuda özeldir.
Merhaba, cevabınız bana yardımcı oldu. Ancak, if ifadesini yorumlama şekliniz için for döngüsünün yalnızca ilk gösterimi yenilediğini lütfen unutmayın, çünkü break ifadesi hala yorumlanmamıştır. Web tarayıcısı görünümü genellikle ilk görünüm olduğu için çalıştığını düşünüyorum, ancak for döngüsü bu durumda hiçbir şey yapmadığından çözümünüzü biraz değiştirmek isteyebilirsiniz =) –
@jake_hetfield Teşekkürler - Bunu kaçırdım! Ölçeklendirilebilirlik/etkinlik sonrası bir ders olarak sınıfları kontrol etmeme ve geride bırakılan 'kırma' mesajını kaçırmama meselesini ekledim. 'Onarın! Cevabınız size yardımcı oldu - bu sorunla uğraşırken bana da yardımcı oldu :) Ayrıca bu konu hakkında hatırlattığım başka bir şeyi de atmamı hatırlattı. – mattsven
Bu benim hayatımı kurtar: self.wkWebView.evaluateJavaScript ("window.scrollBy (1, 1); window.scrollBy (-1, -1);", completionHandler: nil) –
Bu hayatımı kurtarmak:
self.wkWebView.evaluateJavaScript("window.scrollBy(1, 1);window.scrollBy(-1, -1);", completionHandler: nil)
Web görünümündeki bu satırı ekleyin yük temsilci olay veya wkwebview bitiş navigasyonunu
sayesinde MAN
yaptılar yaptılar !!!!- 1. UISlider'ın tüm aygıtlar için ayar noktasını ayarlamakta zorlanıyor musunuz?
- 2. SqlCommand'ı Yeniden Kullanıyor musunuz?
- 3. Bir iOS 7 uygulamasını askıya almak için programlı olarak zorlanıyor musunuz?
- 4. Bir vaka sınıfı kurucusu yeniden şekillendiriyor musunuz?
- 5. GCC, Clang ve Intel Compiler'da tek bir makroyla satır içi zorlanıyor musunuz?
- 6. Tablo çizmek için jQuery'yi kullanın
- 7. Başlıkların html olarak sarılması zorlanıyor
- 8. iOS - Bir daire çizmek için CAShapeLayer
- 9. ggplot2: Hızlı Isı Haritası Çizmek, yeniden şekillendirmek mi?
- 10. Çizmek/NaN
- 11. IE sayfası IE7 Belge Moduna zorlanıyor
- 12. PyCharm: Zorlanıyor Django Şablon Sözdizimi Highligting
- 13. Nasıl yuvarlatılmış bir dikdörtgen çizmek için C#
- 14. Kenarların üstündeki düğümleri çizmek için grafikviz yapın
- 15. Yük üzerinde çizmek için Tuval resmini çiz
- 16. Qt Kullanımı Sin (x) Grafiğini Çizmek için
- 17. gnuplot: Ben çizmek için çalışıyorum SPLOT
- 18. Nasıl matplotlib Axes örneği çizmek için?
- 19. Python: 3B yüzey çizmek için AttributeError
- 20. COLDFUSION: cfdocument ve bir sayfa zorlama zorlanıyor
- 21. Ne yapmaya çalışıyorum bir işlev yeniden çizmek için bir uri çapa oluşturmak zorunda olduğunu javascript
- 22. Grafik düğümleri arasında çizgi çizmek için bazı iyi algoritmalar nelerdir?
- 23. JPA sorgusunu hevesle tüm koleksiyonlara/alanlara döndürmeye zorlanıyor
- 24. Cant çizmek Java'daki şekiller
- 25. Saydamlık/Alfa Kanallı Görüntü Çizmek için Graphics.DrawImage() öğesini kullanma
- 26. Ağda çıktı için çıktı çizmek için kenar ağırlıklarını ekleyin
- 27. localStorage çalışmıyor musunuz?
- 28. En hızlı yolu iphone üzerinde bir ekran tampon çizmek için
- 29. Repo'ya katılmak için GitHub davetini bulamıyor musunuz?
- 30. Perl'i uzatmak için Haskell'i kullanıyor musunuz?
İşi yeniden yükleyebilir miyim? – Raptor
@ShivanRaptor Bu, ancak tüm sayfanın yeniden yüklenmesini gerektirecektir; bu, zaten var olanı basit yeniden çizme/yeniden gösterme ile karşılaştırıldığında * çok uzun * alacaktır. Ancak çözümü buldum. – mattsven
'HTML' içeriğindeki' javascript' nedir? veya "HTML" başlığındaki "meta" etiketi mi? – holex