讓我們在 iOS 上實現九宮格解鎖吧!
本期修刊,有興趣的可以回到上一次 D15 文章查看。只是我這邊再額外補充一個小故事。我原本已為這種手勢解鎖的一大亮點就是滑過的軌跡,沒想到還要做一個隱藏跟顯示軌跡的功能,但是隱藏軌跡我要怎麼知道我滑到什麼 QQ?
上一篇文章教了大家如何使用 UICollectionView
來製作出我們的 GesturePasswordView
,並且可以透過滑動來選取 collectionView 中的項目。這一篇文章,讓我們來使用上一次中的 numbers
來做一些密碼設置吧!
首先我們先建立一個 PasswordInputMode
的 enum
,用來管理目前 GesturePasswordView
的輸入模式是「輸入密碼」還是「設置密碼」,並且宣告一個變數存儲他,我們可以藉由這個 mode 更改輸入模式:
接著我們新增一個 protocol 用來把我們設置以及輸入的結果透過 delegate
回傳給我們 ViewController:
接著我們新增一個 checkNumbers
的方法來判斷密碼設置是不是成功,或者是輸入的數字是否與密碼相匹配:
這邊我們簡單的判斷如果 numbers
的數目大於 4 碼才算是設置成功,並且取代為我們的 password
。而密碼匹配這邊單純判斷 numbers
是否與 password
相同即可。
接著我們到我們有 GesturePasswordView
的 ViewController 中,設置 GesturePasswordView
的基本設置:
接著我們新增一個 UISwitch 用來切換密碼的輸入/設置模式,並且我們拉一個 Action 到程式碼中用來 GesturePasswordView
切換模式:
別忘了補上 GesturePasswordViewDelegate
需要遵循的方法,用這邊的兩個方法來將我們的手勢滑動的結果呈現出來。
最後讓我們看看實際執行的畫面:
那麼這次手勢解鎖的教學就到這邊了,我們結合上一次的教學,讓我們手勢滑動的過程結合密碼的設置以及解鎖,讓我們實現九宮格解鎖的過程。其中我們也能夠思考如何讓這個手勢解鎖的功能更完善,例如:密碼少於四碼是不是可以傳出一個 error 告知使用者,或是當沒有設置密碼時,但卻輸入密碼了,也要通知使用者還沒設置密碼等等...。這些想法都可以讓一個功能更近一步,並且越來越完善。