Saya memiliki aplikasi tempat saya memuat konten ke UIWebView
dan menyajikan ini. Saya tidak dapat menonaktifkan interaksi pengguna sepenuhnya karena saya ingin pengguna dapat mengklik link. Saya hanya perlu menonaktifkan pemilihan pengguna. Saya menemukan suatu tempat di Internet yang dapat Anda gunakan:
document.body.style.webkitUserSelect='none';
Saya mencoba memasukkan ini sebagai
[self.contentView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitUserSelect='none';"];
di webViewDidFinishLoad:
Namun, itu tidak berhasil. Saya masih bisa memilih dan menyalin teks di dalam WebView.
Ada ide apa yang mungkin salah?
Pembaruan: Ini sepertinya hanya terjadi mulai dengan iOS 4.3
UIWebView
menggunakan kategori.canPerformAction
tidak menonaktifkan menu Potong, Salin, Tempel. Dan Select, Select All menu. Bagaimana cara mengatasinya?-webkit-touch-callout
danremoveAllRanges
merusak masukan pengguna. Tidak dapat menggunakan semua metode yang disediakan :(*
lingkup global adalah ia menghentikan input pengguna dalam formulir web. Saya menemukan saya mendapatkan hasil yang lebih baik dengan menempatkan di dalambody
tag sebagai gantinya.Saya dapat mengonfirmasi bahwa kode berikut berfungsi di iOS 5.0 - 8.0.
Juga berfungsi untuk iOS 9 dan lebih baru. Berikut kode swiftnya:
sumber
Saya menggunakan teknik ini di aplikasi web untuk Android / iPhone (dipaketkan dengan Trigger.IO) dan menemukan itu hanya akan bekerja dengan sintaks chaining untuk: not () pseudo-class,:
sumber
*:not(input,textarea) {-webkit-touch-callout: none; -webkit-user-select: none;}
tetapi itu tidak berhasil bagi saya. Terima kasih!Saya suka solusi WrightsCS tetapi saya akan menggunakan ini sehingga pengguna masih dapat menggunakan tindakan salin, tempel, dan pilih pada input
sumber
Saya tidak yakin bagaimana penyiapan dilakukan, tetapi mengapa Anda tidak menghapus pasteBoard saja saat viewWillDisappear dipanggil. Mungkin sesuatu seperti di appDelegate.m Anda:
ini akan memastikan data apa pun yang mungkin telah disalin pengguna, mereka tidak akan dapat menempelkannya di luar aplikasi.
Selain itu, seperti yang Engin katakan, Anda dapat mengganti metode canPerformSelector di kelas pengontrol yang berisi uiwebview.
sumber
Jawaban TPoschel benar tetapi dalam kasus saya urutan penting.
sumber
Saya dapat mengonfirmasi bahwa ini pasti akan berhasil untuk Anda.
Jika Anda ingin Nonaktifkan hanya tag tombol jangkar gunakan ini.
sumber
Hasil kerja luar biasa selama satu minggu! Semua jawaban lainnya salah jika Anda ingin menyimpan peristiwa mouse dan input pengguna di banyak halaman.
1) Metode Swizzle (oleh pustaka rentzsch / jrswizzle ):
NSObject + myCanPerformAction.h:
NSObject + myCanPerformAction.m:
2) Tempatkan UIWebView di UIView dan tambahkan kode:
Dan yang satu ini:
sumber
Cukup tambahkan kode ini ke viewDidLoad () Anda. Pengguna dapat mengklik link tetapi tidak dapat menyalin konten.
sumber
Solusi pertama yang diberikan bekerja dengan sempurna untuk saya ... sampai saya memuat .pdf ke UIWebView saya.
Memuat file .doc bekerja dengan sempurna, tetapi memuat .pdf mengakibatkan baris kode berikut tidak lagi memiliki efek yang diinginkan dan menu salin / tentukan muncul lagi dengan sentuhan panjang oleh pengguna.
Setelah pertarungan lain menarik rambut saya menemukan jawaban ini di sini oleh Johnny Rockex dan itu bekerja seperti juara. UIWebView tanpa Copy / Paste saat menampilkan file PDF
Terima kasih banyak kepadanya untuk solusi jenius yang mudah diterapkan ini !!
sumber
Bagi saya, saya bermaksud mengambil gambar '
NSData
dariUIWebView
olehLongPressGesture
.Tapi Kaca Pembesar dan Salin / Tempel / Potong selalu muncul sebelum fungsi saya dijalankan.
Dan saya menemukan ini:
Artinya, Kaca Pembesar dan Salin / Tempel / Potong membutuhkan 0,5 detik untuk dijalankan, jadi jika fungsi Anda dapat dijalankan dalam 0,49 detik, SELESAI!
sumber
Gunakan fungsi intereksi tampilan web
Ini bekerja untuk saya
NB: ingat untuk mengaktifkan kembali interaksi saat Anda ingin pengguna dapat berinteraksi dengan tampilan web lagi
sumber