天天看點

觸摸事件

第一:觸控事件的基本概念:

      事件是當使用者手指觸擊螢幕及在螢幕上移動時,系統不斷發送給應用程式的對象;

      系統将事件按照特定的路徑傳遞給可以對其進行處理的對象;

      在IOS中,一個UITouch對象表示一個觸摸,一個UIEvent對象表示一個事件;

      事件對象中包含與目前多點觸摸序列相對應的所有觸摸對象,還可以提供與特定視圖或視窗相關聯的觸摸對象;

 第二:觸控的開始,移動和結束:

       觸摸所包含的資訊有時間和空間兩方面:

       時間方面的資訊稱為階段,表示觸摸是否剛剛開始,是否正在移動或處于靜止狀态以及何時結束;

       觸摸資訊還包括目前在視圖或視窗中的位置資訊,以及之前的位置資訊;

 當一個手指接觸螢幕時,觸摸就和某個視窗或視圖關聯在一起,這個關聯在事件的整個生命周期都會得到維護;

第三:觸控與多點觸控:

        當手指接觸到螢幕,不管是單點觸摸還是多點觸摸,事件都會開始,直到使用者所有的手指都離開螢幕;

        觸摸對象UITouch類常用屬性:

        view:觸摸産生時所處的視圖,由于視圖可能發生變化,目前視圖也不一定是最初的視圖;

tapCount:輕擊操作和滑鼠的單價操作類似,tapCount表示短時間内輕擊螢幕的次數,是以可以根據tapCount判斷單擊,輕按兩下,或更多的輕擊;

        phase:觸摸事件在螢幕上有一個周期,即觸摸開始,觸摸點移動,觸摸結束,還有中途取消;

觸控事件響應鍊:

      所有事件響應的類都實UIResponder的子類,它能接收處理事件。

      處理觸摸的四個方法:

    對應響應鍊有以下規則:

     第一響應者就是響應鍊的開始;

     以UIResponder為父類的任何類都是響應者;

 如果第一響應者不處理某個事件,則将該事件傳遞到響應者鍊的下一級,一般情況下如果下一級處理,則停止事件的傳遞;

     如果事件通過整個響應者鍊并且沒有對象處理該事件,則丢棄該事件

    響應者鍊傳遞的順序總結:

    第一響應者幾乎總是視圖或控件,并且首先對事件進行響應;

    如果第一響應者不處理,則傳遞給其他視圖控制器,如果仍不處理則傳遞給第一響應者的父視圖;

    如果父視圖沒有處理,則轉給父視圖的控制器;

    如果一直傳遞下去而沒有環節去處理,則一直傳遞到應用程式的視窗;

    如果視窗不處理,則将傳遞給應用程式委托,如果應用程式委托不是UIResponder子類或不處理,則事件被丢棄;

    如果事件通過整個響應者鍊并且沒有對象處理該事件,則丢棄該事件;