2011-05-11 113 views
0

我從蘋果的UIScrollView類參考文檔閱讀的UIScrollView如下:的UIScrollView觸摸操作

由於滾動視圖沒有滾動條 ,它必須知道觸摸 信號是否打算向與滾動 意圖跟蹤 內容中的子視圖。爲了做出這個決定, 它通過啓動一個定時器臨時截獲一個觸發事件,並且在定時器觸發之前,看看觸摸手指是否有任何移動。如果 計時器觸發而位置不變,則滾動視圖 將跟蹤事件發送到內容視圖的觸摸的子視圖 。如果 用戶在計時器過去之前將其手指拉得足夠遠,則 滾動視圖會取消子視圖中的任何跟蹤並執行滾動 本身。子類可以覆蓋 touchesShouldBegin:withEvent:方法inContentView :, pagingEnabled,和 touchesShouldCancelInContentView: 方法(其由 滾動視圖調用)來影響滾動 視圖如何處理滾動手勢。

我不明白以「如果用戶在計時器過去之前足夠拖動他們的手指......」我認爲計時器已經根據前面的句子開火了的句子。這是在談論另一個計時器嗎?

回答

2

這很混亂。我相信有這取決於你的滾動視圖是否有delaysContentTouches屬性集(和或canCancelContentTouches屬性被設置)

如果delaysContentTouches設置2種可能的行爲:

當用戶點擊它暫時截獲滾動視圖通過啓動計時器觸發事件​​,並在計時器觸發前查看觸摸手指是否進行任何移動。如果定時器在沒有顯着位置變化的情況下觸發,則滾動視圖將跟蹤事件發送到內容視圖的觸摸子視圖。如果用戶在計時器過去之前足夠拖動手指,則滾動視圖開始滾動。

如果定時器觸發:

如果canCancelContentTouches設置滾動視圖取消並觸及傳遞給它的子視圖,並開始滾動。否則,不滾動。

如果在用戶拖動他/她的手指之前計時器尚未過期,就會發生滾動。

我想我說對了...(有人可能要仔細檢查)

HTH