使用者登入

全站搜尋

最新回應

論壇最新主題

論壇最新回覆

會員排行榜

線上使用者

目前共有 0 位註冊使用者6 位訪客 在線上。

事件與觸碰 - Events and Touches

babyfish0226
babyfish0226 的照片

原文連結:Events and Touches

翻譯作者:adammisko

文章校稿:babyfish0226

事件與觸碰 Events and Touches

在iPhone作業系統中,一個觸碰動作指的是您的手指在螢幕上的出現與 移動的動作,而這是屬於專屬的多點觸控序列中的一部分。舉例來說,一個捏合手勢有兩個觸碰的動作:在螢幕上的兩根手指以相反的方向往對方移動。另外還有簡 單的單一手指動作,如輕打、雙輕打或輕輕滑動的手勢 。一個應用程式也許能辨識出更複雜的動作;舉例說,一個應用程式可能有一個撥號盤形狀的自訂控制項讓使用者能用多指來微調了一些變數。

一 個事件也是一個物件,當手指觸摸並移動越過螢幕表面時,系統將不斷送出訊息給應用程式。在所有觸碰動作所產生的多點觸控序列期間,這項事件將提供一個快照 (snapshot ), 最重要的是得知這觸碰動作在特定的View中是屬於新建立還是被改變的動作。多點觸控序列是由第一根手指先觸及畫面開始,而其他手指可能隨後觸碰到螢幕甚 至是所有的手指都可能在螢幕上移動 。而最後的一根手指從螢幕上離開時,則該序列結束。 應用程式在任何觸碰的每一個階段都會不斷地接收事件物件進行活動的訊息。

觸碰有時間和空間兩個概念。在時間方面即所謂的時序階段,指出一 個觸碰動作在何時開始;處於靜止或是移動的狀態,還有何時將會結束 - 當手指從螢幕上舉起的時候(見圖8 -1) 。在View、Window中及當手指往一個方向快撃(swiped)的時候,此時的觸碰將產生一個位置的概念。而當手指觸碰到螢幕時,Window和一 個View將和這個觸碰動作產生關聯並與一個事件的生命週期產生結合。如果同時間有多個觸碰動作並且發生在同一個View中則它們將被一起處理。同樣的, 如果兩個觸碰動作在同一個View中是依序抵達,則將被認為是快速點擊。

圖8-1多點觸控序列和觸碰階段

在iPhone的的作業系統中,一個 UITouch 物件代表了一個觸摸動作,而 UIEvent 物件代表的則是一個事件。一個事件(Event)物件包含了當下多點觸碰序列中的所有Touch物件,並且能提供Touch觸碰物件給指定的View或 Window(見圖8-2 )。一個觸碰物件在一段序列中將為某一特定的手指動作而持續存在,而在追綜手指動作後透過UIKit來產生變化。而這Touch觸摸的屬性將在這接觸的階 段中而被改變,也許是在一個View中、前一個位置、Touch的時間戳記及敲擊的方向等(若任何其它) 。事件處理碼將用來評估這些屬性以決定如何回應這些事件。

圖8-2 UIEvent 物件及它的 UITouch 物件之間的關係圖

系統可以隨時取消多點觸控序列,而事件處理的應用程式則必須預先準備好做出適當的反應。取消的動作將可能被系統最優先事件啟動,比如說接聽一通打來的電話。