這兩天看了一下手勢(shì)密碼,寫(xiě)了一個(gè)簡(jiǎn)單的Dome:GesturePassword,有什么問(wèn)題歡迎指正。
簡(jiǎn)單說(shuō)一下構(gòu)思:
? ? 整體是通過(guò)觸摸手勢(shì)(touchBegin、touchMove、TouchEnd)來(lái)完成的,通過(guò)NSUserDefaults來(lái)存儲(chǔ)手勢(shì),手勢(shì)存儲(chǔ)是通過(guò)每一個(gè)封裝按鈕點(diǎn)的tag值的先后順序排列存儲(chǔ)。
1、首先對(duì)每個(gè)點(diǎn)進(jìn)行一個(gè)封裝,我這里用UIButton按鈕來(lái)完成,設(shè)置默認(rèn)狀態(tài)的圖片和選中狀態(tài)的圖片,切記把按鈕的交互手勢(shì)關(guān)掉,否則會(huì)影響到觸摸手勢(shì)。
2、開(kāi)始觸摸的時(shí)候,判斷一下觸摸手勢(shì)點(diǎn)的位置是不是在某一個(gè)點(diǎn)上,如果在去獲取這個(gè)點(diǎn)的UIButton對(duì)象存儲(chǔ)到數(shù)組里邊并且將UIButton的selected 設(shè)置為 YES。
3、開(kāi)始移動(dòng)的時(shí)候,先去判斷一下數(shù)組里邊是不是已經(jīng)存儲(chǔ)了至少一個(gè)點(diǎn),如果沒(méi)有,說(shuō)明開(kāi)始觸摸的點(diǎn)不對(duì)不進(jìn)行任何操作;如果有進(jìn)行下一步的操作,去判斷移動(dòng)過(guò)程中是否經(jīng)過(guò)了某一個(gè)點(diǎn),如果經(jīng)過(guò)了去獲取這個(gè)點(diǎn)的UIButton對(duì)象添加到數(shù)組中。然后去調(diào)用drawRect設(shè)置線段鏈接。這里要注意一下為了防止多次添加,要先判斷一下UIButton的selected是否為NO。
4、觸摸結(jié)束之后,記錄數(shù)組經(jīng)過(guò)的點(diǎn),將他們的tag值按順序排列設(shè)置成字符串,用戶存儲(chǔ)和判斷。