WKDataDetectorTypes의 데이터 탐지
Webkit
에는 꽤 재미난 기능이 하나 있습니다. 공식 문서는 Webkit
-WkWebViewConfiguration
-dataDetectorTypes
인데요. 바로 dataDetectorTypes
이라는 녀석이에요.
이 녀석은 WKDataDetectorTypes
타입이고, 이름 그대로 데이터를 탐지합니다.
무슨 말이냐면, 애초에 Webkit
에서 제공되는 기능이잖아요? ( 물론 UITextView
안에서도 되긴 합니다. 일부 지원되는 타입이 다른데 자세한 사항은 여기를 참고하세요. ) 그래서 WKWebView
를 통해 웹페이지가 보여진다면 거기서 WkWebViewConfiguration
에 세팅된 탐지값에 따라서 자동으로 WKDataDetectorTypes
라는 타입들을 탐지해서 메뉴를 제공합니다.
var dataDetectorTypes: WKDataDetectorTypes { get set } The types of data detectors to apply to the web view’s content. The default value of this property is
none
.iOS 10.0+
,iPadOS 10.0+
,Mac Catalyst 13.1+
기본값은 none
이라는 부분이 중요하겠네요. WKDataDetectorTypes
타입은 여러가지 종류가 있는데요. 아래와 같습니다. 네이밍만으로 어느정도 전달이 될테니, 설명은 생략할게요 😀
스토리보드로 설정하는 방법은 WKWebView를 생성하고, 우측 Attribute Inspector
를 보시면 있구요.
코드로도 당연히 가능합니다. 아주 간단하게 샘플코드를 작성해봤어요. flightaware
는 항공 관련 정보를 제공하는 페이지인데요. 꽤나 많은 사이트를 참고해봤지만, 제일 적당한 것 같아서 가져왔습니다😀. 아 그리고 한글은 영문처럼 완벽하게 인식이 되진 않는 것 같아요. 주소, 전화번호 같은 것들 말이죠.
자, 그럼 이제 백문이 불여일견
이라고 어떻게 동작하는지 직접 보시죠. 예시를 전부다 가져오진 못했지만, 대부분 가져왔어요.
phoneNumber
phoneNumber
link
link
address
address
calendarEvent
calendarEvent
flightNumber
flightNumber
재미있죠?😆, 각 타입에 따라서 작은 팝업창이 뜨는데 액션을 탭하면 저희가 아무 작업을 해주지 않았음에도 불구하고 다 동작합니다. 그것도 꽤나 편하죠. WKDataDetectorTypes
같은 경우는 사실 지인 분께서 하이브리드 앱 구현 중에 생긴 CS에 대해 이야기하다가 알게 되었는데요. 상황에 따라 요긴하게 쓰거나, 하이브리드 앱 또는 텍스트뷰 등을 구현할 때 유의하면 좋을 것 같습니다.
Conclusion
WebKit
의WKWebView
에서는dataDetectorTypes
이라는 프로퍼티를 통해 웹뷰에서 제공하는 데이터들에 대한 탐지와 액션을 자동으로 제공합니다.WebKit
과TextView
에서 제공하는dataDetectorTypes
은 다릅니다.UIDataDetectorTypes
과WKDataDetectorTypes
으로 대부분 비슷하지만, 타입의 종류가 일부 다르니 유의하세요.dataDetectorTypes
을 어떻게 지정했느냐에 따라 기획의도에서 벗어나는 이슈가 있을 수 있기 때문에 주의하면 될 것 같습니다.
Reference
https://developer.apple.com/documentation/webkit/wkwebviewconfiguration/1641937-datadetectortypes
https://developer.apple.com/documentation/webkit/wkdatadetectortypes
https://developer.apple.com/documentation/uikit/uidatadetectortypes
Last updated