2017-06-14 4 views
0

Je suis le geste de serrer la normale mis en œuvre comme suit:iOS Secouer Gesture - Double Secouer

import CoreMotion 

override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) { 
     if motion == .motionShake {' 
     print ("SHAKE GESTURE DETECTED") 
     } 
} 

Je remarque c'est un peu une nuisance parfois, par exemple, si vous mettez l'appareil vers le bas tout à coup, au-dessus invoque code .

Existe-t-il une chose comme "Double Shake", secouez deux fois pour invoquer?

Répondre

1

Il n'y a pas un geste « Double Shake » officiel, mais vous pouvez y parvenir en utilisant un simple compteur:

var shakeCount = 0 
override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) { 
    if motion == .motionShake { 
     shakeCount += 1 
     if shakeCount == 2 { 
      shakeCount = 0 
      print ("SHAKE GESTURE DETECTED") 
     } 
    } 
} 

Je suggère aussi d'ajouter un NSTimer après la première secousse qui réinitialisera le shakeCount après un certain temps.