2012-06-03 68 views
0

我從頭開始創建自定義控件。就像一個UIScrollView,我必須有一個委託方法,當控件開始滑動時觸發,像scrollViewDidScroll。iPhone - 創建觸發方法

我想到在touches內部調用移動檢查每一個移動的變化,但我做了一些類似的測試,它是非常昂貴的,使touchesMoved緩慢。

第二種方法是將創建的NSTimer觸發方法,每x毫秒,看是否控制是另一個位置,然後觸發方法,但我不知道這一點,因爲如果將不斷檢查控制,即使控件沒有移動,也會消耗CPU。

這樣做的最好方法是什麼?你們如何做到這一點?

謝謝。

回答

1

也許定時器的做法是正確的,我建議你開始在觸摸計時器開始和結束於觸摸停止或3-4秒鐘後觸摸結束,如果你會計算彈跳和減速

+0

好主意! +1! – SpaceDog

+1

我實際上在我的一個項目中使用它,它工作得很好,我也使用相同的解決方案表現不佳 –

+0

謝謝!!!!!!!!! – SpaceDog

0

我真的認爲你不應該重新發明輪子,並從頭開始編寫自定義控件。子類UIControl。它有3種方法

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event 
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event 
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event 

其中你可以執行你的檢查並激發你的行動。

+0

在這種情況下,我有,因爲我正在研究Cocos2D,它的子類化層的一個類。 – SpaceDog

0

你可以使用UIGestureControl代替touchesMoved:,創建委託方法並傳遞給代理didScroll:方法

+0

手勢甚至比觸摸慢,所以這將是一個不好的決定:) –