2012-04-13 89 views
2

我想要一個圖像,當用戶觸摸它時,它會擺動,一旦用戶擡起手指,它就會停下來。檢測物體上的手指

是否有手勢可以用來檢測手指何時下垂,而不僅僅是在初始觸摸時,或者當用戶在手指上移動時?

我已經嘗試了LongPress手勢,但是手指在視圖上的整個時間都沒有被調用。任何人都可以幫助我以最好的方式來激活這個。現在我正在使用touchesBegin,touchesMoved,touchesEnd來做它,但我想知道是否有更好的方法。

任何建議,非常感謝。

感謝

+0

觸摸下也許? – 2012-04-13 16:43:42

回答

0

答案很簡單 - 你可以使圖像的UIButton,並開始觸地擺動,並停止它TouchUpInside或TouchUpOutside

1

蘋果Touches sample包括同時使用UIResponder和UIGestureRecognizer演示代碼方法。

要麼應該爲你正在做的工作。

+0

是的,我明白,但首先,我可以在UIGestures中使用touchesBegin等嗎?我在想,我只能用一個或另一個......這是真的嗎?其次,我希望我的動畫在手指落下的整個過程中發生,最有可能是沒有動作,所以我該如何在手指向下時採取行動? – LilMoke 2012-04-13 16:18:51

+0

我還沒有嘗試過將UIGestureRecognizer與UIResponder混合使用,但是我不知道你不能使用兩者的混合。這聽起來像你試圖觸發你的動畫基於一些持續的事件,而觸摸正在舉行?如果這是你的問題,那麼我建議你在一個單獨的線程上做你的動畫,併發送消息來啓動和停止動畫。您的動畫將與UIActivityIndi​​cator的使用方式類似。我沒有這方面的例子,但搜索「背景動畫」或類似應該指向正確的方向。 – strings42 2012-04-13 16:32:14

+0

顯然,兩者不會在默認情況下一起工作,請參閱http://mobworld.wordpress.com/2011/05/25/touches-cancelled-gesture/這是我的問題,如果我可以讓他們一起工作我很好去。 – LilMoke 2012-04-13 17:09:49

0

聽起來像你想子類 UIGestureRecognizer,我記得,它獲得touchesBegan:...和相關的方法。閱讀UIGestureRecognizer參考中關於子類的註釋。或者像SomaMan建議的那樣使用UIButton。

2

編輯 根據該意見,我稍微誤解了原來的問題,所以我編輯我的回答不同的解決方案,它希望更清楚一點(和答案的實際問題 - 而不是一個在我的頭)。

長按手勢是連續的(在沒有點按手勢的情況下)。這意味着,識別器回調將繼續被調用,直到手勢完成 - 直到「longpress」被釋放纔會發生。所以,以下應該做你想要的。注意:我認爲您要在識別長按時「開始晃動」視圖,然後在釋放手指時「停止晃動」視圖。我只是假裝你有這個功能。適當替代。

- (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer 
{ 
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
     StartShakingView(gestureRecognizer.view); 
    } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) { 
     StopShakingView(gestureRecognizer.view); 
    } 
} 
+0

但您使用哪種UIGestureRecognizer? – samson 2012-04-15 11:58:53

+0

你是什麼意思'手勢點燃時完成抖動'? – LilMoke 2012-04-16 18:32:04

+0

@ samson,@ LilMoke 請參閱編輯答案。 – 2012-04-16 22:01:45