用动画点击手势延迟

时间:2016-02-11 06:06:32

标签: ios swift uigesturerecognizer

我有几个UIView扩展,我从一个轻敲手势识别器调用。为什么背景颜色扩展必须在识别额外的点击之前完成动画? alpha扩展加上我用来动画视图位置的另一个工作正常 - 这意味着我可以尽可能快地点击它们并立即响应。

@IBAction func taps(sender: UITapGestureRecognizer) {
   if !isAnimating {
      currentLabel.fadeOut()
      backgroundColor.fadeBackgroundOut()
      isAnimating = true   
   } else {
      currentLabel.fadeIn()
      backgroundColor.fadeBackgroundIn(curBackground)
      isAnimating = false
   }
}

func fadeOut() {
   UIView.animateWithDuration(0.5,
      delay: 0.0,
      options: UIViewAnimationOptions.CurveEaseOut,
      animations: { self.alpha = 0.0 },
      completion: nil)
}

func fadeBackgroundIn(aColor: UIColor) {
   UIView.animateWithDuration(1.0,
      delay: 0,
      options: UIViewAnimationOptions.CurveEaseIn,
      animations: { self.backgroundColor = aColor },
      completion: nil)
}

2 个答案:

答案 0 :(得分:2)

将您的扩展程序更新为:

func fadeOut() {
   UIView.animateWithDuration(0.5,
      delay: 0.0,
      options: [UIViewAnimationOptions.CurveEaseIn , UIViewAnimationOptions.AllowUserInteraction],
      animations: { self.alpha = 0.0 },
      completion: nil)
}

func fadeBackgroundIn(aColor: UIColor) {
    UIView.animateWithDuration(1.0,
        delay: 0,
        options: [UIViewAnimationOptions.CurveEaseIn , UIViewAnimationOptions.AllowUserInteraction],
        animations: { self.backgroundColor = aColor },
        completion: nil)
}

答案 1 :(得分:0)

这很容易,你必须明白,如果你改变了自我"即视为零,它停止触摸事件。

什么是好的解决方案是" self"即将背景颜色视为透明,而不是改变" self"即视图的alpha值,您的视图将无法显示,并且您将获得手势识别器事件。

替代方案可以是,在视图上添加透明按钮,处理按钮点击操作。