UITextView 是 Swift 原生控件用戶最常用的輸入元件,諸如 Email 、筆記本或是聊天軟體,輸入框鮮少有開發者自己刻。 內建的功能完整,其功能幾乎涵蓋大部分情境,不足的地方只要在原生條件下去擴充即可。 因此,UITextView 底層有非常多未公開的流程,再擴充時如果能了解一二可以解少很多開發時間。

此篇專注於 UITextView 原生觸控事件,建議先參考 前一篇 觸控事件初探

UITextView init and draw

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9ea66d0c-489e-46bc-a894-add808ee90e6/_2021-05-07_10.58.51.png

(上圖 ) 預設下的UITextView 初始化後就已經自帶 22 個 UIGestureRecongnizers

UIView init and draw (對照)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/72815815-bc31-4e03-9241-df752261a1ad/_2021-05-07_11.04.13.png

(上圖 ) UIView 初始化沒有任何 UIGestureRecognizers


深入研究

如同前言,UITextView 本身提供諸多強大的功能,其中一項自動辨識文字轉成可點擊 Link。 我試著在 text 中加入兩個網址,會 print 出些什麼。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/95470ad4-2516-4d07-968f-6a1752935be4/_2021-05-07_11.14.14.png

(上圖 ) 設定好 text 後, UIGestureRecongnizers 從 22 個變成 23 個

試著印出 GestureRecognizers 有哪些

— 前22個

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7c94fccc-ac6d-4164-a92c-da95f4f7d7c4/_2021-05-07_11.29.43.png