這兩天看了一下手勢(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ǔ)和判斷。