46 votes

ScrollView ne défile pas lorsque vous faites glisser les boutons

J'ai une vue de défilement qui faisait défiler quand il n'y avait pas de boutons partout. Maintenant, c'est le cas, et lorsque vous faites glisser la souris (sur le simulateur), rien ne se passe (je pense parce que les boutons sont enfoncés). Comment puis-je faire cela correctement?

17voto

pugia Points 382

J'ai fondé cette question à la recherche d'une solution rapide à ce problème, je l'ai "traduit" comme ceci :

Rapide 5

 class UIButtonScrollView: UIScrollView {

    override func touchesShouldCancel(in view: UIView) -> Bool {
        if view.isKind(of: UIButton.self) {
          return true
        }

        return super.touchesShouldCancel(in: view)
    }    
}

j'espère que cela pourra aider

6voto

Gregg Points 582

Solution Swift 3

 override func touchesShouldCancel(in view: UIView) -> Bool {
    if view is UIButton {
        return true
    }
    return super.touchesShouldCancel(in: view)
}

1voto

Une chose à essayer si vous voyez cela dans un simulateur est de l'exécuter sur un vrai téléphone. Je n'ai pas pu faire défiler dans le simulateur mais aucun problème sur mon téléphone.

0voto

User18474728 Points 219

Dans mon cas, je l'ai résolu de cette façon.

dans ViewDidLoad

 self.scrollView.panGestureRecognizer.delaysTouchesBegan = self.scrollView.delaysContentTouches;

dans M

 - (BOOL)touchesShouldCancelInContentView:(UIView *)view {
    if ([view isKindOfClass:[UIControl class]]) return YES;
    return NO;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X