2017-01-24 21 views
-1

私はユーザーが長時間ボタンを押そうとしていますが、私はこれを試しました。これはSwift 2で完璧に動作していましたが、今は10進数が長くなっています。Swift 3のUILongPressGestureRecognizerの時間経過を検出しました

@IBOutlet weak var button: myButton! 

var longGesture = UILongPressGestureRecognizer(target: self, action: #selector(tapLong(_:))) 

myButton.addGestureRecognizer(longGesture) 


func tapLong(_ sender: AnyObject) { 

    var touchTime = 0.0 

    if sender is UILongPressGestureRecognizer { 

     if sender.state == UIGestureRecognizerState.began { 

      touchTime = CFAbsoluteTimeGetCurrent() 

     } else if sender.state == UIGestureRecognizerState.ended { 

      touchTime = CFAbsoluteTimeGetCurrent() - touchTime 

      print(touchTime) 


     } 
    } 
+0

myButtonにはアウトレットがあることが明らかでした。 – extrablade

答えて

1

これはUIButtonですので、私は@IBAction Sを使用することをお勧めしてタッチダウンイベントにbuttonDown(_:)を接続し、buttonUp(_:)にTouchUpInsideTouchUpOutsideを接続します。

var startTime = Date() 

@IBAction func buttonDown(_ sender: UIButton) { 
    startTime = Date() 
} 

@IBAction func buttonUp(_ sender: UIButton) { 
    let endTime = Date() 
    let elapsed = endTime.timeIntervalSince(startTime) 
    print(elapsed) 
} 

、アクションを接続ストーリーボードでボタンをクリックして接続インスペクタを立ち上げ、その後、@IBActionのに必要なイベントからドラッグします。

Connection an action in the Storyboard

+0

は助けを感謝します、私はそれがちょうど私に秒を与えることはありません、それが接続されている、それは大きな10進数を与える...私はそれがどのような形式ではわからない。 – extrablade

+0

値は 'Double'で秒を指定します。したがって、「1.50000120202030」は1秒半からわずかに長くなります。 'Int'を望むなら、' Int(elapsed) 'を使って分数秒を捨てます。 – vacawama

関連する問題