在IOS開發(fā)中會(huì)遇到各種操作事件,,通過程序可以對這些事件做出響應(yīng),。 首先,當(dāng)發(fā)生事件響應(yīng)時(shí),,必須知道由誰來響應(yīng)事件,。在IOS中,由響應(yīng)者鏈來對事件進(jìn)行響應(yīng),,所有事件響應(yīng)的類都是UIResponder的子類,,響應(yīng)者鏈?zhǔn)且粋€(gè)由不同對象組成的層次結(jié)構(gòu),其中的每個(gè)對象將依次獲得響應(yīng)事件消息的機(jī)會(huì),。當(dāng)發(fā)生事件時(shí),事件首先被發(fā)送給第一響應(yīng)者,,第一響應(yīng)者往往是事件發(fā)生的視圖,,也就是用戶觸摸屏幕的地方。事件將沿著響應(yīng)者鏈一直向下傳遞,,直到被接受并做出處理
路線圖如 First Responser——>The Window——>The Application——>App Delegate
正常的響應(yīng)者鏈流程經(jīng)常被委托(delegation)打斷,,一個(gè)對象(通常是視圖)可能將響應(yīng)工作委托給另一個(gè)對象來完成(通常是視圖控制器ViewController),這就是為什么做事件響應(yīng)時(shí)在ViewController中必須實(shí)現(xiàn)相應(yīng)協(xié)議來實(shí)現(xiàn)事件委托,。
1.觸摸和事件 ——UITouch UITouch對象是一個(gè)手指接觸到屏幕并在屏幕上移動(dòng)或離開屏幕時(shí)創(chuàng)建的,。它有幾個(gè)屬性和實(shí)例方法: phase:屬性,,返回一個(gè)階段常量,指出觸摸開始,、繼續(xù),、結(jié)束或被取消,分別對應(yīng)UITouchPhaseBegan,、UITouchPhaseMoved等 tapCount:屬性,,輕按屏幕的次數(shù) timeStamp:屬性,觸摸發(fā)生的時(shí)間 view:屬性,,觸摸始于那個(gè)視圖 window:屬性,,觸摸始于哪個(gè)窗口 lacationInView:方法,觸摸在指定視圖中的當(dāng)前位置 previousLocationView:方法,,觸摸在指定視圖中的前一個(gè)位置
——UIEvent UIEvent對象包含一組相關(guān)的UITouch對象,,由UITouch對象組成UIEvent對象,可以理解成一個(gè)完整的觸摸操作是一個(gè)UIEvent,,而這一系列完整操作中的每個(gè)點(diǎn)就是UITouch(按下,、移動(dòng)、離開),。 UIEvent的作用是提供相關(guān)觸摸操作的列表,,如果要獲取在屏幕上觸摸的手勢,可以使用該對象,,這一些列操作都存儲(chǔ)在Foundation框架中的NSSet對象中,。
——UIResponder UIResponser提供四個(gè)事件響應(yīng)的方法,這些方法是事件捕捉的核心,。這些方法都接收兩個(gè)參數(shù),,一個(gè)是NSSet(包含指定階段的觸摸)和一個(gè)UIEvent。 touchesBegan:withEvent: 在手指觸摸屏幕時(shí)報(bào)告UITouchPhaseBegan事件 touchesMoved:withEvent: 在手指在屏幕上移動(dòng)時(shí)報(bào)告UITouchPhaseMoved事件 touchesEnded:withEvent: 在手指離開屏幕時(shí)報(bào)告UITouchPhaseEnded事件 touchesCancelled:withEvent: 在因接聽電話或其他因素導(dǎo)致取消觸摸時(shí)報(bào)告UITouchPhaseCancelled事件
定義一個(gè)方法用來響應(yīng)觸摸事件: [cpp] view plaincopy
然后在ViewController中響應(yīng)該方法: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
關(guān)于多點(diǎn)觸摸,,可以參考Apple IOS SDK開發(fā)文檔,,多點(diǎn)觸摸在游戲及其一些新奇的應(yīng)用中比較多,在常規(guī)的應(yīng)用開發(fā)中還是比較少的用到多點(diǎn)觸摸,。
下次將介紹UIControl對象 加入我們的QQ群或微信公眾賬號(hào)請查看:Ryan's zone公眾賬號(hào)及QQ群
歡迎關(guān)注我的新浪微博和我交流:@唐韌_Ryan
|
|