gpt4 book ai didi

ios - UI 动画完成 block 阻止我的点击手势识别点击?

转载 作者:行者123 更新时间:2023-11-28 09:16:01 24 4
gpt4 key购买 nike

我正在制作一个通知栏,在我的 View 顶部淡入淡出。我添加了一个点击手势识别器,这样当用户在通知显示时单击它时,它可以将他带到该更新或其他任何地方。

UIView.animateWithDuration(0.8, animations: {
self.navigationViewController.notificationView.view.alpha = 1.0
}, completion: { finished in
UIView.animateWithDuration(0.8, delay: 5.0, options: .CurveLinear, animations: {
// This line below prevents the tap gesture from ever being recognized
self.navigationViewController.notificationView.view.alpha = 0.0
}, completion: nil)
})
}

如您所见,更新淡入,显示 5 秒然后淡出。当我删除注释行时,一切正常并且可以识别手势,但是当我取消注释时,出于某种原因,当它可见时,手势识别器将无法识别任何点击。

下面是定义 View 和识别器的代码:

// notificationView view controller:
override func viewDidLoad() {
super.viewDidLoad()
tap = UITapGestureRecognizer(target: self, action: "tapped")
self.view.addGestureRecognizer(tap)
tap.numberOfTouchesRequired = 1
tap.numberOfTapsRequired = 1
tap.cancelsTouchesInView = false
}

我不知道这是否有任何区别,但 View 显示在导航 View Controller 上,所以我无法使用 addchildviewcontroller 方法添加 View ,除非它作为页面添加.我不认为这是问题所在,因为它适用于未注释的行。

我也做过

notificationView.view.userInteractionEnabled = true

这似乎没有帮助。

提前致谢!

编辑:我已将问题归结为这个示例项目:https://github.com/magicmark/SwiftAnimationProblem

你可以在这里清楚地看到问题。这可能是另一个 swift 错误吗?

编辑 2:我在 Objective C 中完成了一个版本。同样的问题!

最佳答案

我还没有下载你的样本,但我怀疑如果你在 self.navigationViewController.notificationView.view.alpha 上放置一个观察点,你会发现它在第一个动画完成的那一刻。而不是使用延迟动画。您将需要创建一个 NSTimer(或使用 GCD)来处理延迟。

这是 UIView 动画系统工作原理的一部分。就像您在动画中更改大小时一样。包含在 View 中的模型会立即更改,然后动画 View 以符合模型。

关于ios - UI 动画完成 block 阻止我的点击手势识别点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27659625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com