Как отключить долгое касание в UIWebView?

Я хочу отключить долгое касание из приложения. У меня нет контроля над HTML, который я загружаю в свой WebView.


person Alex Terente    schedule 30.11.2010    source источник
comment
stackoverflow.com/questions/5995210/   -  person Yifan    schedule 23.01.2019


Ответы (4)


В делегате webViewDidFinishLoad я запускаю javascript на загруженной html-странице, которая отключает долгое касание.

[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none'"];
person Alex Terente    schedule 05.04.2011
comment
Я добавил ту же строку.. Но она не работает. Не знаю, что идет не так.. :( В большинстве ссылок я нашел то же решение, что и выше.. - person iGatiTech; 05.10.2015
comment
- (void) webViewDidFinishLoad: (UIWebView*) theWebView { [theWebView stringByEvaluatingJavaScriptFromString:@document.body.style.webkitTouchCallout='none'; document.body.style.KhtmlUserSelect='none']; } Но у меня все еще не работает - person Achal Gandhi; 08.02.2017
comment
@ Денни, этот ответ датирован 2015 годом. Возможно, с тех пор этот вебкит немного изменился. Идея должна быть той же, внедрить javascript в веб-представление, которое отключит долгое касание. - person Alex Terente; 01.10.2018
comment
Вы также можете добавить: [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"]; для Objective-C или webView.stringByEvaluatingJavaScript(from: "document.documentElement.style.webkitUserSelect='none';") для Swift. - person Bejil; 28.06.2019

UIWebView больше не поддерживается. Итак, вы должны реализовать WKWebView, и есть свойство, называемое allowsLinkPreview, с помощью которого вы можете включить или отключить предварительный просмотр с длительным касанием.

 webView.allowsLinkPreview = false
person Mehmet Baykar    schedule 09.02.2020

Вы можете попытаться переопределить следующие методы из контроллера представления:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

таким образом вы можете заменить обычное управление касаниями своей собственной реализацией.

person mbritto    schedule 04.04.2011

Откройте свое представление в Interface Builder, щелкните веб-представление и снимите флажок «Взаимодействие с пользователем включено» в инспекторе атрибутов.

Если вы хотите сделать это в коде, установите для веб-представления userInteractionEnabled собственность на NO.

person winsmith    schedule 01.04.2011
comment
Это отключает все взаимодействие, не так ли? Не просто долгое прикосновение? - person Jim Blackler; 01.04.2011