2016-12-18 8 views
1

私はボタンをタップすると電卓のアプリケーションを構築しています。短いアニメーションがあります。問題は、アニメーション中にボタンが反応しないため、アプリが遅く感じることです。 アニメーション中にUIButtonsが反応しない - iOS Swift 3

は、私が使用してObjective-Cのためのいくつかの解決策を見つけた:スウィフト3用

UIViewAnimationOptionAllowUserInteraction 

が、何も、私のコードは次のようになりますのUIViewの

func myButton() { 

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

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

答えて

4

コール異なる方法:

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) 
} 
+0

Sashaの答えが正しい(投票されました)説明するために、デフォルトでは、システムはアニメーション中のユーザーのやりとりを無効にします。 '.allowUserInteraction'オプションを渡すことによって、そのデフォルトをオーバーライドします。ただし、飛行中のポイントでは、ある場所から別の場所に移動しているボタンをクリックすることはできません。実際には、アニメーションが開始されるとすぐにビューが最終位置に配置され、アニメーションは上に描画される表示専用の「プレゼンテーションレイヤー」で行われます。動いているものをタップするにはカスタムコードを書かなければなりません。 –

関連する問題