2010-11-20 48 views
1
- (void)fadeOutStuff 
{ 
    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
    anim.delegate = self; 
    anim.duration = 0.25f; 
    anim.removedOnCompletion = NO; 
    anim.fillMode = kCAFillModeForwards; 
    anim.fromValue = [NSNumber numberWithFloat:1.0f]; 
    anim.fromValue = [NSNumber numberWithFloat:0.0f]; 
    [self.searchList.layer addAnimation:anim forKey:@"animationOpacity"]; 
} 

我有此代碼簡單地進出動畫對象,以及在動畫完成後,該層是不可觸摸。動畫過程是否將圖層設置爲級別/索引?我仍然可以觸摸動畫層後面的元素,但不支持動畫層本身。我錯過了一個設置?基於這個代碼,我是否錯誤地使用動畫?CABasicAnimation動畫層內禁用任何觸摸活動

回答

0

如果我沒有記錯,隱藏的物體將不會接觸到。我不知道是否適用,如果它只是不透明度設置爲零,但嘗試看看會發生什麼,如果你做它只是0.01f而不是所有的方式爲0.

順便說一句,我不知道如果是錯別字,但是您設置了anim.fromValue兩次,並且您沒有設置anim.toValue

+0

嗨大衛,感謝您的及時響應。我修復了錯字,嘗試在初始化時將視圖設置爲0.01f的字母。這與隱藏物體相同嗎?該視圖仍然沒有受到任何影響。 – cj5 2010-11-20 05:44:32

+0

我記得我和位置轉換也有同樣的問題。我還沒有得到可觸摸的視圖來處理動畫。 – cj5 2010-11-20 05:52:32

+0

好吧,我只是添加了子視圖而沒有動畫,它的不透明度設置爲1.0f,我可以看到它,但它仍然不會對觸摸事件做出反應。我是否會以錯誤的方式添加子視圖?實施子視圖的最佳做法是什麼? – cj5 2010-11-20 18:03:50

0

我弄明白了,屬性fillMode主要負責在動畫對象中禁用觸摸事件。如果您的動畫需要處理觸摸事件,請不要使用它。基本上,我使用的解決方法是刪除了fillMode屬性,並在將動畫添加到圖層後手動設置動畫的最後一個階段

[self.searchList.layer addAnimation:anim forKey:@"animationOpacity"]; 
[self.searchList.layer setValue:[NSNumber numberWithFloat:endingOpacityValue forKey:@"opacity"]]; 
+0

我面臨同樣的問題.....我嘗試了你的方式...仍然無法檢測到觸動.....你能否給我提供你的代碼? – Minakshi 2012-02-15 05:56:34