J'ai une vue défilée qui défilait lorsque les boutons n'étaient pas partout. Maintenant, il le fait, et lorsque vous faites glisser la souris (sur le simulateur) rien ne se passe (je pense que parce que les boutons sont poussés). Comment puis-je faire ça correctement?ScrollView ne défile pas lorsque vous faites glisser les boutons
Répondre
Cela se produit parce que UIButton
sous-vues du UIScrollView
(je suppose que les boutons sont ajoutés comme des sous-vues dans votre cas) sont le suivi des touches et non la vue de défilement. UIScrollView
la méthode touchesShouldCancelInContentView
est la clé ici. Selon sa description: "La valeur retournée par défaut est OUI si la vue n'est pas un objet UIControl
, sinon, elle renvoie NO
.", C'est-à-dire UIControl
objets (boutons), UIScrollView
n'essaie pas d'annuler les touches qui empêchent le défilement.
Ainsi, pour permettre le défilement avec des boutons:
- Assurez-vous que la propriété
UIScrollView
canCancelContentTouches
est réglé surYES
. - Sous
UIScrollView
et passer outretouchesShouldCancelInContentView
pour revenirYES
quand l'objet de vue du contenu est unUIButton
, comme ceci:
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if ([view isKindOfClass:[UIButton class]]) {
return YES;
}
return [super touchesShouldCancelInContentView:view];
}
merci pour votre réponse. J'ai changé le défilement ayant des images pour simuler des boutons (et des touches de suivi pour savoir quand appeler une méthode). Je vais essayer votre solution et voir comment cela fonctionne. Merci! – DanielaM
@DanielaM Si cette réponse merveilleuse vous a aidé comme elle le semble vraiment, il serait bon de l'accepter. – iHunter
** gras ** @Roman K - Vous êtes mon héros! J'ai passé 2 jours à lire dans beaucoup de messages \ forums sur ce problème qui se chevauchent mais aucun tweak ou solution n'a vraiment fonctionné. Votre solution fonctionne vraiment !! Salutations :-) – Shvalb
Je fonde cette question à la recherche de la solution rapide à ce problème, je « traduit » comme ceci:
class UIButtonScrollView: UIScrollView {
override func touchesShouldCancelInContentView(view: UIView!) -> Bool {
if (view.isKindOfClass(UIButton)) {
return true
}
return super.touchesShouldCancelInContentView(view)
}
}
espère que cela pourrait aider
Swift 3 Solution
override func touchesShouldCancel(in view: UIView) -> Bool {
if view is UIButton {
return true
}
return super.touchesShouldCancel(in: view)
}
- 1. ScrollView ne défile pas?
- 2. DragMove ne fonctionne pas lorsque vous faites glisser rapidement?
- 3. Scrollview inside containerView ne défile pas?
- 4. Les boutons radio sont désélectionnés lorsque vous faites glisser l'élément à l'aide de jQuery Sortables
- 5. Winform ne défile pas lorsque vous dessinez des objets
- 6. Le sélecteur dans un ScrollView ne défile pas
- 7. Que se passe-t-il lorsque vous faites glisser l'écran?
- 8. Flex/Flash: Ne pas afficher le curseur 'barre' lorsque vous faites glisser un objet TextField/TextArea?
- 9. Draggable imbriqué à l'intérieur Draggable fait glisser les deux lorsque vous faites glisser l'enfant dans IE
- 10. Comment faire glisser le curseur jQuery uniquement lorsque vous faites glisser les gestionnaires?
- 11. Les panneaux ne défile pas
- 12. ScrollView ne répond pas
- 13. UIScrollView ne défile pas
- 14. Scriptaculous Draggable/Droppable script ne fonctionne pas correctement lorsque vous faites glisser dans un div de défilement
- 15. J'ajoute des boutons sur scrollview mais les boutons ne fonctionnent pas
- 16. iPhone SDK: UIScrollView ne défile pas
- 17. Comment gérez-vous les "défauts" lorsque vous faites DDD
- 18. ScrollViewer ne défile pas
- 19. ListActivity ne défile pas
- 20. Dojo: faites glisser et déposez Arrêter Faites glisser
- 21. WPF - ScrollViewer ne défile pas lorsque ScrollToHorizontalOffset() est appelé
- 22. Le clavier virtuel n'apparaît pas lorsque vous faites pivoter l'écran?
- 23. Android ListView qui ne défile pas?
- 24. UIScrollView ne défile pas horizontalement
- 25. jQueryUI: au choix - option d'annulation lorsque vous faites glisser le lasso sur un élément
- 26. Anchor ne défile pas correctement
- 27. ListBox ne défile pas correctement
- 28. navigateur SWT ne défile pas
- 29. Les délégués scrollView ne fonctionnent pas (scrollViewDidEndDecelerating)
- 30. UIWebView dans un ScrollView ne redessine pas
Avez-vous essayé sur un périphérique physique, il existe plusieurs différences entre les appareils et le simulateur, et la souris et multi-touch est l'un des plus grands! –