Apakah ada yang tahu cara menghentikan UIWebView memantul secara vertikal? Maksud saya ketika pengguna menyentuh layar iphone mereka, menyeret jari mereka ke bawah, dan tampilan web menunjukkan tempat kosong di atas halaman web yang saya muat?
Saya telah melihat kemungkinan solusi berikut ini, tetapi tidak ada satupun yang bekerja untuk saya:
http://forums.macrumors.com/showthread.php?t=619534
Bagaimana cara menghentikan UIScrollView memantul secara horizontal?
ios
objective-c
iphone
uiscrollview
uiwebview
Taman Brad
sumber
sumber
Jawaban:
... sepertinya bekerja dengan baik.
Ini akan diterima di App Store juga.
Pembaruan : di iOS 5.x + ada cara yang lebih mudah -
UIWebView
memilikiscrollView
properti, sehingga kode Anda dapat terlihat seperti ini:Sama berlaku untuk
WKWebView
.sumber
UIWebView
agar saya dapat menelepon ke[webView setBounces:NO]
mana pun saya mau.Saya sedang melihat sebuah proyek yang membuatnya mudah untuk membuat aplikasi web sebagai aplikasi yang dapat diinstal penuh pada iPhone yang disebut QuickConnect , dan menemukan solusi yang berfungsi, jika Anda tidak ingin layar Anda dapat digulir sama sekali, yang dalam kasus saya Saya tidak melakukannya.
Dalam posting proyek / blog yang disebutkan di atas, mereka menyebutkan fungsi javascript yang dapat Anda tambahkan untuk mematikan bouncing, yang pada dasarnya bermuara pada ini:
Jika Anda ingin melihat lebih lanjut tentang bagaimana mereka mengimplementasikannya, cukup unduh QuickConnect dan periksa .... Tapi pada dasarnya yang dilakukannya hanyalah memanggil javascript itu pada pemuatan halaman ... Saya mencoba meletakkannya di kepala dokumen saya, dan tampaknya berfungsi dengan baik.
sumber
Yah semua yang saya lakukan untuk mencapai ini adalah:
Bekerja dengan baik untuk saya ... Juga, jawaban untuk pertanyaan ini adalah yang akan ditolak oleh Apple jika Anda menggunakannya di aplikasi iphone Anda.
sumber
UIScrollView
ini adalah subview pertamaUIWebView
yang mungkin berlaku untuk saat ini tetapi ini dapat dengan mudah berubah di masa depan (bahkan minor) pembaruan untuk iOS atau konfigurasi tertentu. Anda harus benar-benar melakukanfor
iterasisubviews
untuk benar-benar menemukanUIScrollView
(itu sebenarnya tidak banyak pekerjaan dan setidaknya Anda dijamin untuk mendapatkanUIScrollView
dan tidak crash program Anda ...Di iOS 5 SDK Anda dapat mengakses tampilan gulir yang terkait dengan tampilan web secara langsung daripada mengulang melalui subview-nya.
Jadi untuk menonaktifkan 'memantul' di tampilan gulir, Anda dapat menggunakan:
Lihat Referensi Kelas UIWebView .
(Namun jika Anda perlu mendukung versi SDK sebelum 5.0, Anda harus mengikuti saran Mirek Rusin .)
sumber
Cepat 3
sumber
Peringatan. Saya menggunakan setAllowsRubberBanding: di aplikasi saya, dan Apple menolaknya, menyatakan bahwa fungsi API non-publik tidak diperbolehkan (cite: 3.3.1)
sumber
Di Swift untuk menonaktifkan bouncing
sumber
Metode Brad bekerja untuk saya. Jika Anda menggunakannya, Anda mungkin ingin membuatnya sedikit lebih aman.
Jika apel mengubah sesuatu, maka pantulan akan kembali - tetapi setidaknya aplikasi Anda tidak akan macet.
sumber
Di iOS5 hanya jika Anda berencana untuk membiarkan pengguna memperbesar konten tampilan web (mis: ketuk dua kali) pengaturan bouncing tidak cukup. Anda perlu mengatur juga properti alwaysBounceHorizontal dan alwaysBounceVertical ke TIDAK, jika tidak mereka zoom-out (ketuk dua kali lain ...) ke default akan memantul lagi.
sumber
Saya melintasi koleksi subview UIWebView dan mengatur latar belakangnya menjadi [UIColor blackColor], warna yang sama dengan latar belakang halaman web. Tampilan akan tetap terpental tetapi tidak akan menunjukkan latar belakang abu-abu gelap yang jelek.
sumber
Sepertinya saya seperti UIWebView memiliki UIScrollView. Anda dapat menggunakan API yang terdokumentasi untuk ini, tetapi bouncing diatur untuk kedua arah, bukan secara individual. Ini ada dalam dokumen API. UIScrollView memiliki properti bouncing, jadi sesuatu seperti ini berfungsi (tidak tahu apakah ada lebih dari satu scrollview):
sumber
Saya kesal mengetahui bahwa UIWebView bukan tampilan gulir, jadi saya membuat subkelas kustom untuk mendapatkan tampilan gulir tampilan web. Suclass ini berisi tampilan gulir sehingga Anda dapat menyesuaikan perilaku tampilan web Anda. The punchlines dari kelas ini adalah:
}
Kemudian, saat Anda membuat tampilan web khusus, Anda dapat menonaktifkan bouncing dengan:
Ini adalah cara tujuan umum yang bagus untuk membuat tampilan web dengan perilaku pengguliran yang dapat disesuaikan. Ada beberapa hal yang harus diperhatikan:
sumber
Datang mencari jawaban ini dan saya akhirnya hanya beruntung pada jawaban saya sendiri dengan mengacaukannya. aku melakukannya
dan itu berhasil.
sumber
Ini bekerja untuk saya, dan juga indah (saya menggunakan phonegap dengan webView)
atau
sumber
Saya mencoba pendekatan yang sedikit berbeda untuk mencegah objek UIWebView bergulir dan memantul: menambahkan pengenal isyarat untuk mengesampingkan gerakan lain.
Tampaknya, UIWebView atau sub -scroller-nya menggunakan pengenal gerakan pan sendiri untuk mendeteksi pengguliran pengguna. Tetapi menurut dokumentasi Apple ada cara yang sah untuk mengganti satu pengenal isyarat dengan yang lain. Protokol UIGestureRecognizerDelegate memiliki metode gestureRecognizer: seharusnyaRecognizeSecara bersamaanWithGestureRecognizer: - yang memungkinkan untuk mengontrol perilaku setiap pengenal gesture yang bertabrakan.
Jadi, yang saya lakukan adalah
dalam metode viewDidLoad view controller:
lalu, metode override gesture:
Tentu saja, metode delegasi ini dapat membuat saya lebih kompleks dalam aplikasi nyata - kita dapat menonaktifkan pengenal lain secara selektif, menganalisis otherGestureRecognizer.view dan membuat keputusan berdasarkan tampilan apa itu.
Dan, akhirnya, demi kelengkapan, metode yang kami daftarkan sebagai pan handler:
itu bisa kosong jika semua yang kita inginkan adalah membatalkan pengguliran dan pemantulan tampilan web, atau itu bisa berisi kode kita sendiri untuk mengimplementasikan jenis gerakan panci dan animasi yang benar-benar kita inginkan ...
Sejauh ini saya hanya bereksperimen dengan semua hal ini, dan tampaknya berfungsi kurang lebih seperti yang saya inginkan. Saya belum mencoba mengirimkan aplikasi apa pun ke iStore. Tapi saya yakin saya belum menggunakan apa pun yang tidak terdokumentasi sejauh ini ... Jika ada yang menemukan sebaliknya, mohon informasikan kepada saya.
sumber
Inilah dua solusi potensial yang lebih baru. Rupanya, Anda dapat menggunakan jqtouch atau pastrykit untuk menonaktifkan pengguliran. Namun, saya belum dapat menggunakannya. Anda mungkin lebih kompeten.
mematikan pengguliran vertikal
menggali ke dalam pastrykit
sumber
penentuan posisi tetap pada safari seluler
Tautan ini banyak membantu saya ..... Mudah .. Ada demo ..
sumber
(Contoh Xcode 5 iOS 7 SDK) Berikut adalah contoh Aplikasi Universal menggunakan fungsi scrollview setBounces. Ini adalah proyek / contoh sumber terbuka yang terletak di sini: Tautan ke SimpleWebView (Project Zip dan Contoh Kode Sumber)
sumber
Salah satu subview dari
UIWebView
harus aUIScrollView
. SetelscrollEnabled
propertinyaNO
dan tampilan web akan menonaktifkan sepenuhnya scrolling.Catatan: ini secara teknis menggunakan API pribadi dan dengan demikian aplikasi Anda dapat ditolak atau macet dalam rilis OS mendatang. Gunakan
@try
danrespondsToSelector
sumber
Lihatlah ke dalam
bounces
propertiUIScrollView
. Quoth the Apple docs:Pastikan Anda menggunakan yang benar
UIScrollView
. Saya tidak yakin seperti apa hirarki itu untukUIWebView
, tetapi tampilan gulir bisa menjadi orangtua, bukan anak, dariUIWebView
.sumber
Untuk menonaktifkan
UIWebView
pengguliran, Anda dapat menggunakan baris kode berikut:Dalam contoh ini,
ObjWebview
adalah tipeUIWebView
.sumber
webView.scrollView.scrollEnabled = TIDAK; webView.scrollView.bounces = TIDAK;
sumber