我有一個UIButton子類,它執行一些自定義繪圖和動畫。這一切都工作正常和丹迪。UIButton子類:在自定義動畫完成後調用[super touchesEnded:]
但是,我的大多數按鈕通過調用[self dismissViewControllerAnimated]忽略當前視圖,一旦確認模型無論按鈕按下是否應該完成,我都希望有一個延遲在解散視圖之前允許動畫完成。
我能夠很容易地在touchesEnded上爲UIButton子類創建動畫,然後調用[super touchesEnded],它可以正常工作,但它不會讓我的動畫在關閉視圖之前完成。就像這樣:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CABasicAnimation *myAnimation = [CABasicAnimation animationWithKeyPath:@"transform.foo"];
//set up myAnimation's properties
[self.layer addAnimation:shakeAnimation forKey:nil];
[super touchesEnded:touches withEvent:event]; //works! but no delay
}
我爲了創建延遲第一次嘗試通過使用CATransaction如下:
其中,據我所知,在執行CATransaction的completionBlock,但它只是ISN什麼都不做。
我也試着將touchesEnded中的touches和event參數賦值給屬性和全局變量,然後在由NSTimer調用的另一個方法中執行[super touchesEnded]。同樣的事情似乎發生在代碼執行的地方,但是我對[super touchesEnded]的調用沒有做任何事情。
我在網上挖了好幾個小時。從UIResponder添加其他觸摸方法的存根,其中只包含[super touches ...]。嘗試爲NSTimer調用的方法設置我的全局變量(我很可能錯過了關於全局變量的一些東西......)。這個按鈕是由Storyboard創建的,但是我已經將類設置爲我的自定義類,所以我不認爲UIButton的+(UIButton *)buttonWithType方法正在影響這個。
我錯過了什麼?是否有一些我忘記的小事或者是沒有辦法延遲從UIButton子類中調用[super touchesEnded]?