[英]iPhone sdk Cocoa Touch - Pass touches down from parent UIView to child UIScrollview
我在IB的xib里面有一個UIView,里面是一個UIScrollview,它是一個80x80的小正方形,並動態加載8個左右的80 x 80縮略圖。
UIScrollview不會裁剪圖像,因此它們可以向兩側伸出,因此您可以左右滑動以將所選圖像滾動到中間,分頁處於打開狀態,因此它們可以捕捉每個圖像。
我進行了研究,發現這是最好的方法,可能也是唯一的方法。
由於一個原因,UIScrollview位於“容器” UIView中,它在那里接收觸摸/滑動並將它們傳遞給UIScrollview的子控件,否則所有觸摸都必須在80x80的UIScrollview小區域開始,我希望它們在圖像行中的任何位置。
我在某處看到了一些示例代碼,但是無法實現。
從頭到尾將我視為菜鳥,應該如何在IB中設置UIView和UIScrollview以允許傳遞任何觸摸,我應該在哪里放置什么代碼?
UIView設置為scroll_container,子UIScrollview為char_scroll
目前,除了將觸摸從父母傳遞給孩子之外,其他所有操作都正常,並且現在,當我希望能夠滑動時,觸摸必須始終在UIScrollview(居中的80x80小框)內開始在水平480X80長父UIView中向左或向右移動,並仍可滾動子UIScrollview。
希望你能幫助我理解我的意思!
我所有的指示都說這不是做到這一點的方法!
即使:
(a)蘋果醫生說這可行並且如何做到;
(b),您可以使hitTest正常運行,並使UIEvent對象流暢地運行
如果是我,我希望Apple對操作系統進行的首次更改會破壞代碼!
我要做的是:
您需要在您的狀態下建模:
state1:用戶在此觸摸上請求的(delta x,delta y)位置更改
要么
state2:如果圖像仍在減慢並且無法靜止,則釋放時手指的(增量x,增量y)和(速度x,速度y)和clock()時間
state3:圖像靜止
由此可以計算動畫參數:
初始值:增量x,增量y,速度x,速度y,clock()時間(以毫秒為單位)
如果支持彈跳:任何中間轉折點
最終:delta-x,delta-y,x速度,y速度,clock()時間(以毫秒為單位)
根據這些動畫參數,可以計算出一組動畫關鍵幀並將其饋送到Core Animation。 (要在動畫過程中平滑顯示自定義減速度,必須使用大量關鍵幀。)
-
您找到了哪些參考來說出您的建議是最好的方法?
您可以子類化UIScrollView並重寫-pointInside:withEvent:方法。 UIView的默認實現返回類似CGRectContainsPoint(self.bounds,thePointToTest);的信息。 只需在更寬的矩形上進行測試即可。
您的操作方式大部分都在那兒。 我嘗試將UIView子類化以向下傳遞觸摸事件,但是我的第一次嘗試沒有起作用,而是找到了這一點: 如何擴展UIScrollView的響應區域
基本上,子類UIScrollView可以擴展其hitTest范圍。 您仍將具有包含的UIView,但是它將是被動的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.