觸摸的生命周期
UITouchPhaseBegan——用戶(hù)一旦觸摸屏幕,即進(jìn)入此階段
UITouchPhaseMoved——用戶(hù)的手指在屏幕上移動(dòng)
UITouchPhaseStationary——自上一個(gè)事件發(fā)生之后,用戶(hù)?仍然在觸摸著屏幕表面,但卻沒(méi)有移動(dòng)
UITouchPhaseEnded——當(dāng)用戶(hù)把觸摸屏幕的手指從屏幕上拿開(kāi)之后,就進(jìn)入了這個(gè)階段
UITouchPhaseCancelled——如果iOS系統(tǒng)不再追蹤某個(gè)觸摸操作,那么就會(huì)進(jìn)入該階段。這通常是因?yàn)橄到y(tǒng)中斷而導(dǎo)致的。
觸摸事件的響應(yīng)者
包括UIView及UIViewController在內(nèi)的所有UIResponder子類(lèi)都可以響應(yīng)觸摸。每個(gè)類(lèi)都可以決定自己要如何響應(yīng)。
觸摸相關(guān)的回調(diào)方法
touchesBegan:withEvent:——當(dāng)觸摸事件處于“起步階段”,也就是用戶(hù)剛開(kāi)始觸碰屏幕時(shí),系統(tǒng)會(huì)調(diào)用這個(gè)方法。
touchesMoved:withEvent:——當(dāng)用戶(hù)觸摸屏幕并持續(xù)在屏幕上移動(dòng)手指時(shí),系統(tǒng)會(huì)調(diào)用這個(gè)方法。
touchesEnded:withEvent:——當(dāng)用戶(hù)把觸摸屏幕的一根手指或所有手指都從屏幕上拿開(kāi)時(shí),觸摸過(guò)程就結(jié)束了,而系統(tǒng)此時(shí)會(huì)調(diào)用這個(gè)方法。如果在用戶(hù)移動(dòng)手指的過(guò)程中程序做了一些處理,那么此時(shí)應(yīng)該執(zhí)行相關(guān)的清理工作。
touchesCancelled:WithEvent:——如果目前正在發(fā)生的觸摸事件遭到系統(tǒng)阻斷,致使Cocoa Touch必須對(duì)此做出響應(yīng),那么系統(tǒng)會(huì)調(diào)用這個(gè)方法。
同時(shí)識(shí)別多個(gè)手勢(shì)
實(shí)現(xiàn)代理中的gestureRecognizer: shouldRecognizeSimultaneouslyWithGestureRecognizer: 的委托方法,并將其返回值設(shè)為YES,使得多個(gè)手勢(shì)識(shí)別器能夠同時(shí)運(yùn)作。