UI按钮在动画期间不响应-iOS Swift 3

UI按钮在动画期间不响应-iOS Swift 3,ios,swift,animation,uibutton,Ios,Swift,Animation,Uibutton,我正在构建一个计算器应用程序,当我点击按钮时,会出现一个简短的动画。问题是按钮在设置动画时没有响应,这使应用程序感觉迟钝 我使用以下方法找到了一些针对Objective-C的解决方案: UIViewAnimationOptionAllowUserInteraction 但Swift 3没有,我的代码如下: func myButton () { sender.layer.backgroundColor = firstColor sender.setTitleColor(UICo

我正在构建一个计算器应用程序,当我点击按钮时,会出现一个简短的动画。问题是按钮在设置动画时没有响应,这使应用程序感觉迟钝

我使用以下方法找到了一些针对Objective-C的解决方案:

UIViewAnimationOptionAllowUserInteraction
但Swift 3没有,我的代码如下:

func myButton () {

    sender.layer.backgroundColor = firstColor
    sender.setTitleColor(UIColor.white, for: UIControlState.normal)

    UIView.animate(withDuration: 0.5) {
        sender.layer.backgroundColor = secondColor
    }
}

调用UIView的不同方法:

func myButton () {
    sender.layer.backgroundColor = firstColor
    sender.setTitleColor(UIColor.white, for: UIControlState.normal)

    UIView.animate(withDuration: 0.5,
                   delay: 0.0,
                   options: .allowUserInteraction,
                   animations: {
                       sender.layer.backgroundColor = secondColor },  
                   completion: nil)
}

调用UIView的不同方法:

func myButton () {
    sender.layer.backgroundColor = firstColor
    sender.setTitleColor(UIColor.white, for: UIControlState.normal)

    UIView.animate(withDuration: 0.5,
                   delay: 0.0,
                   options: .allowUserInteraction,
                   animations: {
                       sender.layer.backgroundColor = secondColor },  
                   completion: nil)
}

Sasha的答案是正确的(投票)。为了解释,默认情况下,系统在动画期间禁用用户交互。通过传入
.allowUserInteraction
选项,可以覆盖该默认值。但是,您仍然无法在飞行途中的某个点上单击从一个位置移动到另一个位置的按钮。真正发生的事情是,一旦动画开始,视图就被放置在它的最终位置,并且动画在绘制在顶部的仅显示的“表示层”中完成。如果你想能够点击正在移动的东西,你必须编写自定义代码才能这样做。@duncac我们怎样才能点击正在移动的东西?@YunusT.,通常你不能。您必须将轻触手势识别器附加到父视图,然后在表示层中对移动视图的层进行测试。如果你想要一个详细的答案,你应该发布另一个关于这个问题的问题。萨沙的答案是正确的(投票)。为了解释,默认情况下,系统会在动画期间禁用用户交互。通过传入
.allowUserInteraction
选项,可以覆盖该默认值。但是,您仍然无法在飞行途中的某个点上单击从一个位置移动到另一个位置的按钮。真正发生的事情是,一旦动画开始,视图就被放置在它的最终位置,并且动画在绘制在顶部的仅显示的“表示层”中完成。如果你想能够点击正在移动的东西,你必须编写自定义代码才能这样做。@duncac我们怎样才能点击正在移动的东西?@YunusT.,通常你不能。您必须将轻触手势识别器附加到父视图,然后在表示层中对移动视图的层进行测试。如果你想要一个详细的答案,你应该发布另一个关于这个的问题。