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...