Soru Neden bir UIWebView * kaydırma, başka bir UIScrollView öğesini kaydırmaktan çok farklı?


Yükleyen bir uygulama yapıyorum küçük Tek bir tam ekran UIWebView içine basit HTML (yerel olarak) miktarı. Bu web görünümünü kaydırdığımı fark ettim hissediyor diğer UIScrollView'ları kaydırmaktan önemli ölçüde farklı. Bu başlı başına bir performans ya da cevap verme meselesi olarak görünmüyor ... Bu sadece web görünümünü yukarı ve aşağı sürükleyip sürüklerken, momentumun nasıl çalıştığı meselesi. Sadece "yerli" hissetmiyor (daha iyi bir kelime olmaması için). Pekmezi ya da pudingi karıştırmak gibi ... ... "yapışkan" ve hissetmek istediğin gibi "kaygan" değil.

Buna neyin sebep olduğunu bilen biri var mı? Bunu düzeltmenin herhangi bir yolu var mı, yoksa en azından bir UIWebView'ın daha "doğal" olduğunu hissetmek mi?


32
2018-02-07 23:41


Menşei


Ne tür bir HTML görüntülüyorsunuz? Belki de yerel kontrolleri kullanarak her şeyi başarmanın bir yolu vardır. - Jack Lawrence
@JackLawrence - HTML aslında kullanıcı tarafından oluşturulmuş, sunucudan periyodik olarak çekilir ve çekirdek verilerde depolanır. Görünümü yerel kontrollerle kuramsal olarak uygulayabilirim, ancak kullanıcı tarafından oluşturulan verileri doğrudan görüntülemek kadar esnek değildir. - wxactly


Cevaplar:


Aynı algıya sahibim. Bu webView's scrollView yavaşlama oranı ile yapmak zorunda. Bu testi koştum ve 1) şüphemizi doğrular ve 2) bir düzeltme önerir.

Bir scrollView ve kullanıcı arayüzüne bir webView ekledim ve sonra şunları kaydettim:

NSLog(@"my scroll view's decel rate is %f", self.scrollView.decelerationRate);
NSLog(@"my web view's decel rate is %f", self.webView.scrollView.decelerationRate);
NSLog(@"normal is %f, fast is %f", UIScrollViewDecelerationRateNormal, UIScrollViewDecelerationRateFast);

Bu çıktı, webView'in daha sürtünmeli olma hakkındaki tahminini doğrular:

my scroll view's decel rate is 0.998000
my web view's decel rate is 0.989324
normal is 0.998000, fast is 0.990000

Ve bir düzeltme önerir:

self.webView.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;

53
2018-02-08 00:18



İpeksi pürüzsüz. Sadece mükemmel. Teşekkürler! - wxactly
Bunun yapılması, web görüntülemelerinin diğer görüntülemelere göre çok daha pahalı olması nedeniyle yapıldığına dikkat çekiyor. Kaydırıcıyı "daha sert" hale getirmek, kullanıcının sayfayı kaydırdığında çekmek için daha az yeni alan olmasını sağlayarak bunu gizlemeye yardımcı olur. Bu, belirli bir web görünümünün ele alabileceğini biliyorsanız, bunu değiştirmemelisiniz demez. olduğu bir nedenden dolayı yapılmakta ve kullanım durumunuz için bir sorun olmadığından emin olmalısınız. - Brent Royal-Gordon
Bu fantastik! Umarım projem için çalışır. Teşekkür ederim. - Bruno Bronosky
@ BrentRoyal-Gordon Ben sadece bu soruya tökezledim ve merak ediyorum: eğer normal kaydırma yavaşlama oranı 0.998000 ve fast olduğu 0.990000 daha düşük olan normalo zaman webview değeri 0.989324 daha da alttan fast Kaydırmayı yavaşlatmak yerine daha hızlı mı? Yani, web görüntülemelerinin daha pahalı hale getirilmesi, daha büyük bir değer beklerdim 0.998000 yavaşlama oranı için, daha düşük değil. Bir şey mi eksik? - Mtz
Yavaşlama belirsiz bir terimdir. Negatif ivmenin büyüklüğü olarak düşünürseniz daha mantıklı olur. Muhtemelen v '= v (1-r) olarak uygulanır. - danh