uitouch
uitouch類中包含五個屬性
•window:觸控產生時所處的視窗。由於視窗可能發生變化,當前所在的視窗不一定是最開始的視窗
•view:觸控產生時所處的檢視。由於檢視可能發生變化,當前檢視也不一定時最初的檢視
•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引數為空的話,返回的時觸控點在整個視窗的位置
觸控事件的處理
•當某個uiview發生觸控事件時,系統會將和事件相關的uitouch物件作為引數傳入
••因為可以有多根手指同時觸發同乙個事件,所以傳給檢視的是一組uitouch物件,儲存在nsset中,例如:
如果兩根手指同時觸控某個檢視,那麼touchesbegan:withevent:的第乙個引數是包含兩個uitouch例項的nsset物件
如果這兩根手指一前一後分開觸控同乙個檢視,那麼檢視會收到兩個獨立的touchesbegan:withevent:訊息,並且每個nsset物件中只包含乙個uitouch物件
••因此,根據nsset中uitouch的個數可以判斷出是單點觸控還是多點觸控
觸控事件的傳遞••
•主視窗會呼叫hittest:withevent:方法在檢視繼承樹中找到乙個最合適的子檢視來處理觸控事件,該子檢視即為hit-test檢視
••如果hit-test檢視不處理收到的事件訊息,uikit則將事件**到響應者鏈中的下乙個響應者,看其是否能對該訊息進行處理
iOS觸控事件
在ios開發的觸控事件中包括 1.touchesbegan 觸控開始在一次觸控事件中只會執行一次 void touchesbegan nsset touches withevent uievent event touches是nsset集合,表示事件由幾個手指操作,最多5個 2.touchesmov...
iOS 觸控事件處理
window 觸控產生時所處的視窗。由於視窗可能發生變化,當前所在的視窗不一定是最開始的視窗。view 觸控產生時所處的檢視。由於檢視可能發生變化,當前檢視也不一定時最初的檢視。tapcount 輕擊 tap 操作和滑鼠的單擊操作類似,tapcount表示短時間內輕擊螢幕的次數。因此可以根據tapc...
ios觸控事件二 事件傳遞
了解了uievent以及uitouch之後,那麼事件在ios是如何傳遞的呢?響應者鏈 響應者物件是乙個能夠接收並處理事件的物件。注意在ios中不是任何物件都能處理事件,只有直接或間接繼承了uiresponder的物件才可作為事件的響應者。uiresponder是所有響應者物件的基類。在ios的ui控...