2012-10-02 90 views
1

我動畫的視圖中的塊(其移動畫面外幀)是這樣的:iOS:KVO +動畫=無動畫?

[UIView animateWithDuration:0.3 animations:^{ 
    view.frame = CGRectOffset(view.frame, .0f, CGRectGetHeight(view.frame)); 
} completion:^(BOOL finished) { 
    // view is removed here 
}]; 

此動畫奇妙的作品並且當由一個按鈕按下觸發平滑。之後,視圖被刪除並釋放。

現在,如果我把這個變成一個國際志願者組織觀察員(由UIGestureRecognizer觸發值變化):

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    // perform animation from above 
} 

則認爲僅僅是0.3秒後取出,而不是向下的動畫。我確信所有這些都在主線上運行。

任何想法爲什麼不播放動畫?

SOLUTION:

在其中進行動畫被稱爲多次,動畫視圖,以便快速向下,看來好像它瞬間消失的方法。顯然這絕對不會發生。

+1

是的,如上所述。 – manmal

回答

1

有之間UIGestureRecognizer的靶作用機制和UIControl所述一個(UIButton)一個微妙的差異:UIControl立即提供的動作,在檢測到觸摸事件的同時UIGestureRecognizer時間表下一次通過的運行循環的動作。

雖然這並不能解釋缺失的動畫,但它仍然有助於理解發生了什麼。通常,UIView動畫在從手勢識別器的動作觸發時可以正常工作。

+0

謝謝!你的回答指向正確的方向(知道它必須是我自己的代碼的錯誤) - 原來這個方法被稱爲多次。 – manmal