9
votes

Comment ajouter UipangesureCognizer à UiscrollView Sousviews

Je ajoute des sous-espions à un uiscrollview et j'ajouterai uipangesurerecognizer dans ces sous-espoirs. Tout fonctionne bien, mais maintenant après avoir ajouté uipangesturerecognizer à la sous-système de la vue de défilement, le défilement n'est pas possible.

Quelle peut être la solution possible à ce problème?


4 commentaires

Où ajoutez-vous les sous-espions et où attachez-vous le RECONSTAUR DE GESTURE PAN?


duplicaté possible de Défilement est désactivé quand j'ajoute un uipangesturerecognizer à Uiscrollview


Vous avez demandé exactement la même question trois heures avant de poser celui-ci.


J'ai résolu ceci n'utilise pas les reconnaissants de gestes panoramiques et les touches touchées, touches, des méthodes touchées, touchées, touchées (en xamarine). Et dans Sous-StatView, lorsque je veux déplacer / Pan, je désactive le défilement sur UiscrollView Super View.


3 Réponses :


21
votes

Le problème est que le reconnaissance de gestes panoramique est ce qui est utilisé dans la vue de défilement pour contrôler le défilement. Votre reconnaisseur de geste prend la priorité et la désactivation des vues de défilement

Si vous souhaitez toujours pouvoir faire défiler, vous pouvez définir votre geste reconnaissant pour exiger la vue de défilement une pour échouer avant de fonctionner: P>

[self.myCustomPanRecognizer requireGestureRecognizerToFail:self.scrollView.panGestureRecognizer]; 


3 commentaires

ScrollView.PangESTurerecognizer est uniquement disponible chez iOS5 .. Si vous souhaitez prendre en charge IOS4, vous pouvez obtenir les reconnaissants de geste de la vision de ScrollView et vérifier la classe pour obtenir le pangesturerecognizer.


merci@bastian, je n'ai pas réalisé que c'était seulement iOS 5, répondez à jour


Et si nous voulons reallow self.scrollview.pangeserurerecognizer



10
votes

Si vous souhaitez utiliser les deux personnes simultanées, vous pouvez utiliser

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer


4 commentaires

Malheureusement, cela ne fonctionne pas avec le reconnaissance de geste qui appartiennent à la vue de défilement. Ces reconnaissants ont besoin que leur vue de défilement associée soit également leur délégué.


Eh bien, si vous ne pouvez pas changer le délégué de la reconnaissance de geste dans la vision de ScrollView, vous pouvez toujours modifier le délégué de l'autre reconnaissance.


Oui, cela est vrai, mais vous avez besoin des deux reconnaissants coordonnés de retourner oui à la méthode des délégués, je crois.


Eh bien, vous pouvez faire quelque chose comme: - (BOOL) Gesurerecognizer: (UIGESTRECOnminizer *) GesureRecognizerImmerieInvecroviitésInvecrovirez-vous: (Uigestur Erecognizer *) Autres gesticulesCognizer {Si ([SIGNEURSEURS ISEQUAL: YOURGESTERCOGNIZER] && [Autres tiers ISequal: ScrollVief.PangESTureraReCogner]) {Retour Oui; } else {// Autres calculs}}



1
votes

SWIFT 4 STRT>

Conforme au contrôleur d'affichage au uigesurerecognizerDelegate code> ... p>

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

    if otherGestureRecognizer == scrollView.panGestureRecognizer { // or tableView.panGestureRecognizer
        return true
    } else {
        return false
    }

}


0 commentaires