У меня есть приложение, в котором я загружаю контент UIWebView
и представляю его. Я не могу полностью отключить взаимодействие с пользователем, потому что хочу, чтобы пользователь мог нажимать ссылки. Мне просто нужно отключить выбор пользователя. Я нашел где-то в Интернете, что вы можете использовать:
document.body.style.webkitUserSelect='none';
Я пробовал вставить это как
[self.contentView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitUserSelect='none';"];
в webViewDidFinishLoad:
Однако это не работает. Я все еще могу выделять и копировать текст внутри WebView.
Любые идеи, что может пойти не так?
Обновление: похоже, это происходит только с iOS 4.3.
UIWebView
с помощью категории.canPerformAction
не отключает меню Вырезать, Копировать, Вставить. И выберите, выберите все меню. Как это исправить?-webkit-touch-callout
иremoveAllRanges
прервать ввод пользователя. Невозможно использовать все предоставленные методы :(*
глобальную область видимости заключается в том, что он останавливает ввод пользователя в веб-формы. Я обнаружил, что лучше помещаю вbody
тег.Я могу подтвердить, что следующий код работает в iOS 5.0 - 8.0.
Также работает с iOS 9 и новее. Вот быстрый код:
источник
Я использую эту технику в веб-приложении для Android / iPhone (в комплекте с Trigger.IO) и обнаружил, что он работает только с синтаксисом цепочки для псевдокласса: not ():
источник
*:not(input,textarea) {-webkit-touch-callout: none; -webkit-user-select: none;}
но мне это не помогло. Спасибо!Мне нравится решение WrightsCS, но я буду использовать его, чтобы пользователи по-прежнему могли использовать копирование, вставку и выбор действий на входах.
источник
Я не уверен, как выполняется настройка, но почему бы вам просто не очистить pasteBoard при вызове viewWillDisappear. Может быть, что-то вроде вашего appDelegate.m:
это гарантирует, что какие бы данные ни скопировал пользователь, они не смогут вставить их вне приложения.
Кроме того, как сказал Энгин, вы можете переопределить метод canPerformSelector в классе контроллера, который содержит uiwebview.
источник
Ответ TPoschel правильный, но в моем случае порядок был важен.
источник
Я могу подтвердить, что это определенно сработает для вас.
Если вы хотите Отключить только тег кнопки привязки, используйте это.
источник
Результат большой работы за неделю! Все остальные ответы неверны, если вы хотите сохранить события мыши и пользовательский ввод на многих страницах.
1) Метод Swizzle (от библиотеки rentzsch / jrswizzle ):
NSObject + myCanPerformAction.h:
NSObject + myCanPerformAction.m:
2) Поместите UIWebView в UIView и добавьте код:
И этот:
источник
Просто добавьте этот код в свой viewDidLoad (). Пользователь может щелкнуть ссылку, но не может скопировать содержимое.
источник
Первое данное решение отлично сработало для меня ... пока я не загрузил .pdf в свой UIWebView.
Загрузка файла .doc работала отлично, но загрузка .pdf привела к тому, что следующая строка кода больше не имела желаемого эффекта, и при долгом прикосновении пользователя снова всплывало меню копирования / определения.
После очередного выдергивания волос я нашел здесь ответ Джонни Рокекса, и он сработал как чемпион. UIWebView без копирования / вставки при отображении файлов PDF
Большое ему спасибо за это простое в реализации гениальное решение !!
источник
Для меня, я предназначен для извлечения изображений
NSData
сUIWebView
помощьюLongPressGesture
.Но лупа и копирование / вставка / вырезание всегда происходят до выполнения моей функции.
И я нашел вот это:
Это означает, что лупа и копирование / вставка / вырезание требуют 0,5 секунды для выполнения, поэтому, если ваша функция может быть выполнена за 0,49 секунды, ГОТОВО!
источник
Используйте функцию интерактивного просмотра веб-страниц
Меня устраивает
PS: не забудьте включить взаимодействие, когда вы хотите, чтобы пользователь снова мог взаимодействовать с веб-просмотром
источник