iOS第三方安全鍵盤封裝-2020-06-19

需求簡介

系統(tǒng)的鍵盤輸入被認(rèn)為是不安全的,所以在一些敏感信息的輸入時,要求用安全鍵盤。這個做起來比較麻煩,所以一般都會購買第三方的安全鍵盤組件來使用。

集成

這次用到的第三方,給出的組件是.a形式的靜態(tài)庫,集成進(jìn)來之后是這樣的:

企業(yè)微信截圖_614fc2fb-44ab-4e43-b626-3d58d829d1a7.png

如何封裝?

所謂的安全鍵盤,其實是在系統(tǒng)的UITextField的基礎(chǔ)上進(jìn)行的二次開發(fā),添加了加解密,保證安全性。同時不用系統(tǒng)鍵盤輸入,而是采用自定義的view,自定義的鍵盤。
所以,采用一個自定義的view來封裝,簡單講就是再包一層。

(1) 作為容器,使密碼控件四周緊貼。這樣的話控件的位置和大小和這個容器View就完全一致了。。

(2)將一些參數(shù)固定下來,方便多次多地調(diào)用。

封裝過程

  • 安全控件是作為商品賣的,所以一般都會有一個類似licence的參數(shù),用來標(biāo)識客戶。在用的時候,這個參數(shù)只要在一個地方固定下來就可以了,沒必要每次用都設(shè)置一次。

  • 安全控件,加密是重點內(nèi)容之一。加密方式有很多種,在用的時候,可以固定一種。

  • 響應(yīng)方式是代理的形式,不是很喜歡,所以將這個容器view作為代理,對外提供block形式的接口。

企業(yè)微信截圖_ed553190-18d7-4514-a719-04b9b8dbcbd1.png
  • 第三方的安全控件作為這個容器View子組件
企業(yè)微信截圖_9bdd99e2-9e39-45a9-92cc-fa3d8905b268.png
  • 在初始化方法initWithFrame中設(shè)置一些屬性
企業(yè)微信截圖_5db262fb-20fb-45e8-9fc5-f3e2a6c08c2e.png
  • 重寫layoutSubviews,讓安全控件textField和容器view完全緊貼,這樣容器的位置大小就是安全控件的位置和大小
企業(yè)微信截圖_0e52ff6f-24dd-417c-be89-c568adb79698.png
  • 實現(xiàn)代理,并輸出加密后的字符串。
企業(yè)微信截圖_632a8545-5a16-4e29-8f63-d4003c8f7ab3.png
  • 接口,只有一個加密后的字符串。TextField的功能也就是接收用戶輸入,然后得到一個字符串。安全控件,也就是得到一個加密的字符串。
企業(yè)微信截圖_3c0c60fa-a238-4983-b4e8-dcbf3033c04f.png

優(yōu)缺點:這樣封裝比較徹底,并且連代理函數(shù)也實現(xiàn)了,外界使用很方便。不過,這樣封裝之后,本質(zhì)是一個UIView,而不是UITextField,原本具有的很多屬性就丟失了。比如,placeholder這個UIView所沒有的屬性。

繼承式封裝

為了保持UITextField的特性,可以考慮繼承式封裝。因為第三方控件是從UITextField繼承而來的,所以我們的自定義TextField可以直接繼承第三方控件。

  • 將公共配置寫成一個公共方法
企業(yè)微信截圖_45383250-de74-43de-b979-bd39755ce1b8.png
  • 重寫初始化方法,包括代碼創(chuàng)建,xib創(chuàng)建,以及安全控件新增的初始化方法。
企業(yè)微信截圖_72ff328e-5733-4e9d-9244-f84bfcd4f2ce.png

優(yōu)缺點:這樣封裝不夠徹底,大多數(shù)情況下不是很好。不過優(yōu)點是保持了一開始的UITextField的特性,比UIView要多一些屬性可用。

參考文章

iOS UIView自定義之純代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容