觸控事件處理

2021-06-28 01:36:05 字數 1559 閱讀 4993

ios programming – 

觸控事件

處理(1)

iphone/ipad無鍵盤

的 在cocoa中,代表觸控物件的類是uitouch。當使用者觸控螢幕幕後,就會產生相應的事件,所有相關的uitouch物件都被包裝在事件中,被程式交由特定的物件來處理。uitouch物件直接包括觸控的詳細資訊。

uitouch

類中包含5個屬性:

window

:觸控產生時所處的視窗。由於視窗可能發生變化,當前所在的視窗不一定是最開始的視窗。

view

:觸控產生時所處的檢視。由於檢視可能發生變化,當前檢視也不一定時最初的檢視。

tapcount

:輕擊(tap)操作和滑鼠的單擊操作類似,tapcount表示短時間內輕擊螢幕的次數。因此可以根據tapcount判斷單擊、雙擊或更多的輕擊。

timestamp

:時間戳記錄了觸控事件產生或變化時的時間。單位是秒。

phase

:觸控事件在螢幕上有乙個週期,即觸控開始、觸控點移動、觸控結束,還有中途取消。而通過phase可以檢視當前觸控事件在乙個週期中所處的狀態。phase是uitouchphase型別的,這是乙個列舉配型,包含了

·uitouchphasebegan

(觸控開始) ·

uitouchphasemoved

(接觸點移動) ·

uitouchphasestationary

(接觸點無移動) ·

uitouchphaseended

(觸控結束) ·

uitouchphasecancelled

(觸控取消)

uitouch

類中包含如下成員函式:

- (cgpoint)locationinview:(uiview *)view

:函式返回乙個cgpoint型別的值,表示觸控在view這個檢視上的位置,這裡返回的位置是針對view的座標系的。呼叫時傳入的view引數為空的話,返回的時觸控點在整個視窗的位置。

- (cgpoint)previouslocationinview:(uiview *)view

:該方法記錄了前乙個座標值,函式返回也是乙個cgpoint型別的值, 表示觸控在view這個檢視上的位置,這裡返回的位置是針對view的座標系的。呼叫時傳入的view引數為空的話,返回的時觸控點在整個視窗的位置。

當手指接觸到螢幕,不管是單點觸控還是多點觸控,事件都會開始,直到使用者所有的手指都離開螢幕。期間所有的uitouch物件都被包含在uievent事件物件中,由程式分發給處理者。事件記錄了這個週期中所有觸控物件狀態的變化。

關於響應者的概念,通過以下幾點說明:

響應者物件(response object)

第一響應者(first responder)

當前接受觸控的響應者物件被稱為第一響應者,即表示當前該物件正在與使用者互動,它是響應者鏈的開端。

響應者鏈(responder chain)

管理事件分發

如果要讓檢視接收多點觸控,需要設定它的multipletouchenabled屬性為yes,預設狀態下這個屬性值為no,即檢視預設不接收多點觸控。

iOS 觸控事件處理

window 觸控產生時所處的視窗。由於視窗可能發生變化,當前所在的視窗不一定是最開始的視窗。view 觸控產生時所處的檢視。由於檢視可能發生變化,當前檢視也不一定時最初的檢視。tapcount 輕擊 tap 操作和滑鼠的單擊操作類似,tapcount表示短時間內輕擊螢幕的次數。因此可以根據tapc...

UIView的觸控事件處理

void touchesbegan nsset touches withevent uievent event 2 一根或者多根手指在view上移動,系統會自動呼叫view的下面方法 隨著手指的移動,會持續呼叫該方法 void touchesmoved nsset touches withevent...

IOS觸控事件處理 如何處理多個觸控點

引用 在ios開發中,uigesturerecognizer可以方便的響應處理手勢事件。而如果要想更精細的處理,我們還需要借助touchesbegan,touchesmoved,touchesended等觸控方法。這些方法 都是uiresponder中的方法。檢視控制器和檢視類,都是uirespon...