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

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

 myUIWebView.dataDetectorTypes = UIDataDetectorTypePhoneNumber; 

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

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

4 Solutions collect form web for “WKWebKit: нет параметров dataDetectorTypes”

Данная статья была обновлена, чтобы отразить изменения в 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]; 
  • В Xcode NSFetchRequest возвращает объекты только, а не их атрибуты
  • Приложение зависает при загрузке файла с сервера
  • Как получить версию iOS для iPod / iPhone из приложения Mac OS X?
  • Может ли iOS поддерживать AES 256?
  • IOS: сохранение массива с помощью NSUserDefault
  • Перетаскивание не работает в Xcode
  • Пример игровой площадки Alamofire разбивается на HTTPS-URL в версии 1.2.1
  • Установить локализацию по умолчанию для приложения iOS
  • XCode 9 beta, показывающая ошибку при запуске приложения
  • Присоединение источников к двоичному dylib в Xcode
  • Создание частного cocoapod с зависимостями от других cocoapods
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.