當(dāng)用戶觸摸屏幕,,會有touchbegin 事件,然后觸摸也可以移動,,也會有touchmove,,然后離開就會有touchend時間,總的來說touch事件有一下三個階段:<喎?"http://www./kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8aW1nIHNyYz0="http://www./uploadfile/Collfiles/20140417/2014041709211089.png" alt="\"> 首先touchbegin ,,之后用戶移動的的話會進入touchmove,,然后手指離開就會有touchend,用戶也可以直接離開,,就直接沖touchbegin 到tauchend,。 無論哪個階段,ios都會將這些階段包裹成一個touch事件,,先傳給手勢們,,手勢會分析這些事件,改變自己的狀態(tài),,然后發(fā)送消息給target,,target就會調(diào)用處理函數(shù)進行事件處理,。什么是手勢狀態(tài)改變??聪聢D 這個圖是手勢的狀態(tài)遷移自動機,,左邊是不連續(xù)的單一手勢,右邊是連續(xù)的手勢,。 手勢剛開始默認處于possible狀態(tài),,當(dāng)分析出可以識別時,單一分離手勢立馬變?yōu)閞ecognized狀態(tài),,并發(fā)送消息給target,,不識別就變?yōu)镕ailed,但不發(fā)消息給target,。 連續(xù)的手勢,,當(dāng)初次識別時,其從possible變?yōu)閎egin狀態(tài),,然后發(fā)送消息給target,,然后繼續(xù)分析touch事件,然后處于change,,發(fā)送消息給target,,當(dāng)變化后不符合該手勢的模式時,就變?yōu)閏anceled狀態(tài),,但不發(fā)送消息給target,,如果touch end時間來了后,就變?yōu)閞ecognized,,并發(fā)送消息給target,。 總之在狀態(tài)變化的時候會發(fā)送消息給target,但變化的目標狀態(tài)是 canceled 或者 failed的話,,是不發(fā)送消息給target的,。還有當(dāng)處于recognized(end)狀態(tài)是,ios會把手勢的狀態(tài)重新置為possible狀態(tài),,但不發(fā)消息給target,。 講了這么多下來就講如何滿足特定需求。先看一下兩個手勢的代理函數(shù) |
|
來自: UchihaItachiF > 《ios》