2017-04-27 18 views
0

ユーザがUIViewを押すと、アニメーションを使ってすべてのサブビューを表示または非表示にするという意味で、youtubeと非常によく似たインターフェースを設定します。UIButtonアルファを変更するとタップが認識されない

func setupControlViewVisiblity(playingVideo: Bool = false, duration: TimeInterval = 1.0, isExpanded: Bool = false){ 
     var alpha:CGFloat = 1 

    if isShowingControls { 
     //If we're showing then we're about to hide everything so alpha is 0 
     alpha = 0 
    } 


    UIView.animate(withDuration: duration, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: { 

     self.pausePlayButton.alpha = alpha 
     self.backButton.alpha = alpha 
     self.infoLabel.alpha = alpha 
     self.fullScreenButton.alpha = alpha 
     self.currentTimeLabel.alpha = alpha 
     self.videoLengthLabel.alpha = alpha 
     self.videoSlider.alpha = alpha 

    }, completion:nil) 

    isShowingControls = !isShowingControls 
} 

私がいる問題は(isShowingControlsが真である)私は、このメソッドを呼び出すと、私はコントロールを表示すると、私のUIButtonsは最初のタップを認識しないということです。これは文字通り、ビューのアルファベットが0から1に変わったときにのみ発生し、ボタンをタップしようとします。

メインキューでアニメーションを実行しようとしましたが動作しません。アルファを0から1に変更する場合は、数秒待ってからボタンをタップします。 UIButtonsアルファが変更された直後にどうすればいいですか?

おかげ

編集:私はそれは私が0.2にそれを切り替えたときに、それが動作するため、アニメーションの再生時間に関係していると思います。私はそれを少し高く保ち、これを機能させるにはどうすればいいですか?

答えて

0

デフォルトでは、アニメーションがアニメーション化されている間、UIVIewアニメーションはユーザーの操作を許可しません。

幸いにもアニメーションオプションallowUserInteractionがあります。これ以上の情報はありませんが、文書hereで確認できます。また、すべてのオプションを確認する価値があるhere

これを試してみてください:

UIView.animate(withDuration: duration, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [.curveEaseOut, .allowUserInteraction], animations: { 

    // Update the views 

}, completion:nil) 
関連する問題