2017-07-12 4 views
1

Je sais qu'il ya des messages là-bas qui résout la différence d'identification entre le problème des robinets simples et doubles, mais ils sont tous périmés ou en C++. Donc, je veux savoir comment identifier la différence entre les robinets simples et doubles parce que chaque fois que je tape deux fois le système pense que c'est un robinet. J'ai défini la valeur de numberOfTaps sur 1 pour un tap unique et 2 pour double tap.Swift - Comment identifier la différence entre les robinets simples et doubles

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(respondToTapGesture(gesture:))) 
    view.addGestureRecognizer(tap) 

    tap.numberOfTapsRequired = 1 

let doubleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(respontToDoubleTapGesture(gesture:))) 
    view.addGestureRecognizer(doubleTap) 

    doubleTap.numberOfTapsRequired = 2 
+0

Ces questions périmées utilisent-elles 'UITapGestureRecognizer'? Ma pensée est ce qui se passe est votre tap tape sur votre 'doubleTap'. Si oui, ce que * pourrait * faire est d'ajouter du code dans vos sélecteurs pour attendre que vous sachiez que c'est un double tap. (Je ne pense pas en utilisant des reconnaisseurs configurés comme celui-ci, vous pouvez ajouter du code à un seul geste.) – dfd

Répondre

5

Afin de reconnaître les mesures prises ou de faire la différence entre le robinet simple et double, vous devez faire échouer le geste, il suffit d'ajouter que le code ci-dessous

tap.require(toFail: doubleTap) 
1

Le problème est que vous avez deux différents reconnaisseurs qui tentent de reconnaître le geste.

Ce code permettra à chacun d'entre eux de travailler:

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 

Vous devez vous assurer que vous avez déclaré le contrôleur en tant que délégué de la reconnaissance des gestes:

class FromDB: UICollectionViewController, UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate { 
} 

vous devez également exiger le simple appui pour échouer pour que le double appui se fasse:

tap.require(toFail: doubleTap)