IOS學習筆記9—IOS觸摸事件監聽和操作

來源:互聯網
上載者:User

在IOS開發中會遇到各種操作事件,通過程式可以對這些事件做出響應。

首先,當發生事件響應時,必須知道由誰來響應事件。在IOS中,由響應者鏈來對事件進行響應,所有事件響應的類都是UIResponder的子類,響應者鏈是一個由不同對象組成的階層,其中的每個對象將依次獲得響應事件訊息的機會。當發生事件時,事件首先被發送給第一響應者,第一響應者往往是事件發生的視圖,也就是使用者觸控螢幕幕的地方。事件將沿著響應者鏈一直向下傳遞,直到被接受並做出處理


路線圖如 First Responser——>The Window——>The Application——>App Delegate


正常的響應者鏈流程經常被委託(delegation)打斷,一個對象(通常是視圖)可能將響應工作委託給另一個對象來完成(通常是視圖控制器ViewController),這就是為什麼做事件響應時在ViewController中必須實現相應協議來實現事件委託。


1.觸摸和事件

——UITouch

UITouch對象是一個手指接觸到螢幕並在螢幕上移動或離開螢幕時建立的。它有幾個屬性和執行個體方法:

phase:屬性,返回一個階段常量,指出觸摸開始、繼續、結束或被取消,分別對應UITouchPhaseBegan、UITouchPhaseMoved等

tapCount:屬性,輕按螢幕的次數

timeStamp:屬性,觸摸發生的時間

view:屬性,觸摸始於那個視圖

window:屬性,觸摸始於哪個視窗

lacationInView:方法,觸摸在指定視圖中的當前位置

previousLocationView:方法,觸摸在指定視圖中的前一個位置


——UIEvent

UIEvent對象包含一組相關的UITouch對象,由UITouch對象組成UIEvent對象,可以理解成一個完整的觸摸操作是一個UIEvent,而這一系列完整操作中的每個點就是UITouch(按下、移動、離開)。

UIEvent的作用是提供相關觸摸操作的列表,如果要擷取在螢幕上觸摸的手勢,可以使用該對象,這一些列操作都儲存在Foundation架構中的NSSet對象中。


——UIResponder

UIResponser提供四個事件響應的方法,這些方法是事件捕捉的核心。這些方法都接收兩個參數,一個是NSSet(包含指定階段的觸摸)和一個UIEvent。

touchesBegan:withEvent: 在手指觸控螢幕幕時報告UITouchPhaseBegan事件

touchesMoved:withEvent: 在手指在螢幕上移動時報告UITouchPhaseMoved事件

touchesEnded:withEvent: 在手指離開螢幕時報告UITouchPhaseEnded事件

touchesCancelled:withEvent: 在因電話中或其他因素導致取消觸摸時報告UITouchPhaseCancelled事件


定義一個方法用來響應觸摸事件:

-(void)manageTouches:(NSSet *)touches{    for (UITouch *touch in touches) {        switch (touch.phase) {            caseUITouchPhaseBegan:                NSLog(@"began...");                                break;                            caseUITouchPhaseMoved:                 NSLog(@"move...");                       break;                            caseUITouchPhaseEnded:                 NSLog(@"end...");                       break;            default:                break;        }    }}

然後在ViewController中響應該方法:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;


-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;


關於多點觸摸,可以參考Apple IOS SDK開發文檔,多點觸摸在遊戲及其一些新奇的應用中比較多,在常規的應用開發中還是比較少的用到多點觸摸。


下次將介紹UIControl對象

加入我們的QQ群或公眾帳號請查看:Ryan's
zone公眾帳號及QQ群


歡迎關注我的新浪微博和我交流:@唐韌_Ryan

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.