WKWebKit: нет параметров dataDetectorTypes

В UIWebView было довольно легко добавить UIDataDetectorTypes к представлению:

 myUIWebView.dataDetectorTypes = UIDataDetectorTypePhoneNumber; 

И так далее. Однако WKWebView , WKWebView , не обладает аналогичным свойством. В этой ссылке упоминается, что она переместилась в свойство WKWebViewConfiguration в myWebKitView.configuration , но как официальная документация, так и сами заголовки не ссылаются на dataDetectorTypes .

В настоящее время я пытаюсь перенести приложение с помощью UIWebView на WKWebView , и это приложение в настоящее время имеет настраиваемые пользователем UIDataDetectorTypes . Итак, есть ли способ реализовать это с помощью предоставленного API, или мне нужно написать собственный код для анализа HTML?

Данная статья была обновлена, чтобы отразить изменения в API между бета-версиями iOS 8. Начиная с 8.0.1, в dataDetectorTypes не dataDetectorTypes свойства WKWebView , без другого сопоставимого публичного API.

Пока он не будет добавлен обратно в класс, вам придется реализовать это самостоятельно с помощью NSDataDetector или отказаться от использования UIWebView .

На самом деле WKwebView не имеет свойства dataDetectorTypes . Но в IOS 10 WKWebViewConfiguration есть.

Попробуйте следующий фрагмент кода.

 WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init]; theConfiguration.dataDetectorTypes = WKDataDetectorTypeNone; WKWebView *webView = [[WKWebView alloc] initWithFrame:_someFrame configuration:theConfiguration]; 

Это будет работать только с iOS10 и далее.

Свойство dataDetectorTypes было добавлено в WKWebViewConfiguration в iOS10.

Возможные значения: номер телефона, ссылка, адрес, calendarEvent, номер отслеживания, номер FlightNumber, lookupSuggestion и все.

Простым обходным решением для поддержки детектора телефонных номеров в WKWebView было бы применение проверки регулярных выражений в javascript через WKUserScript

 NSString *jScript = @"document.getElementById(\"main\").innerHTML.replace(/[\+\d]{1}[\d]{2,4}[\s,][\d\s-\\(\\),]{7,}/g, \"<a href=\"tel:\$&\">\$&</a>\")"; WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES]; WKUserContentController *wkUController = [[WKUserContentController alloc] init]; [wkUController addUserScript:wkUScript]; WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init]; wkWebConfig.userContentController = wkUController; wkWebV = [[WKWebView alloc] initWithFrame:self.view.frame configuration:wkWebConfig]; 
  • Отключить усиление в WKWebView
  • Webkit переполнения прокрутки Touch ошибка CSS на iPad
  • Какие действия запускают функцию webViewWebContentProcessDidTerminate
  • Backspace внутри элемента INPUT приводит к тому, что фиксированное положение DIV перемещается в курсор
  • Как включить локальное хранилище в моем приложении на основе WebKit?
  • Не удалось выполнить команду com.apple.WebKit.WebContent
  • iOS UIWebView случайно разбивается на WebCore :: FrameTree :: top
  • Каковы последствия использования неподдерживаемого свойства WebKit?
  • Проблемы с webkit translate3d (peek-thru)
  • Невозможно создать / включить среду WebKit в проект iOS
  • Максимальный размер базы данных WebSQL / SQLite внутри UIWebView (телефонная задержка)
  • Давайте будем гением компьютера.