自定义动画后的 UIButton 动作

Posted

技术标签:

【中文标题】自定义动画后的 UIButton 动作【英文标题】:UIButton action after custom animation 【发布时间】:2014-01-09 20:39:53 【问题描述】:

我希望自定义动画与 UIButton 相关联,因此我决定使用超类 UIButton 创建自己的类。然后我像这样重载了 touchesBegan 方法

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
[UIView animateKeyframesWithDuration:0.5
                               delay:0
                             options: 0
                          animations:^

                              [UIView addKeyframeWithRelativeStartTime:0
                                                      relativeDuration:0.5
                                                            animations:^
                                                                self.transform = CGAffineTransformScale(self.transform, 0.7, 0.7);
                                                            ];

                              [UIView addKeyframeWithRelativeStartTime:0.5
                                                      relativeDuration:0.5
                                                            animations:^
                                                                self.transform = CGAffineTransformIdentity;
                                                            ];

                          
                          completion:^(BOOL finished) 
                              [super touchesBegan:touches withEvent:event];
                          ];

动画效果很好,但之后什么也没有发生。看起来调用超级方法在完成处理程序中不起作用(不知道为什么)。我的问题是:我可以改变什么来延迟 UIButton 操作以类似的方式创建自己的类?

编辑:我想创建自己的类,因为我的应用中有很多按钮,我希望它们的行为相同。

【问题讨论】:

您希望动画完成后会发生什么? 您不需要创建自定义按钮来执行此操作。只需使用标准按钮在触屏或触屏时触发动画,然后将要在动画之后运行的任何代码放在完成块中。 【参考方案1】:

UIButton 动作通常被分配在 UIControlEventTouchUpInside 上触发,这应该在 touchesEnded 方法中解决,而不是 touchesBegan。

【讨论】:

以上是关于自定义动画后的 UIButton 动作的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中为自定义 UIButton 设置动画

如何在自定义 UIButton 中实现 .isHighlighted 动画?

UITableViewController 自定义单元格中缺少 UIButton 默认点击淡入淡出动画

iOS UIButton设置图片动画

SwiftUI:自定义模态动画

有没有办法在自定义 UIButton 中调用 TouchUpInside 操作?