2010-01-10 5 views
17

Quelle est la meilleure façon d'arrêter immédiatement la décélération d'un UIScrollView dans l'iPhone 3.0?Arrêter la décélération de UIScrollView

Je souhaite conserver la décélération de l'UIScrollView jusqu'à ce qu'il s'arrête naturellement ou que l'utilisateur effectue une action précise, quoi qu'il arrive en premier.

Merci!

+0

Salut, êtes-vous sûr de vouloir quelque chose comme ça? comportement de l'application comme celui-ci sera rejeté par Apple à coup sûr. –

+0

Voulez-vous dire qu'après que l'utilisateur a déplacé la vue défilante et qu'elle défile, vous voulez empêcher la vue de défiler en réponse à quelque chose d'autre comme si l'utilisateur avait posé son doigt dessus pour l'arrêter? – Nimrod

+0

Henrik: Oui. Cela ne devrait pas provoquer de rejet dans le contexte où j'en ai besoin. – hpique

Répondre

15

suggestion Untested à venir :)

Lorsque l'événement du robinet bouton est pris, vous lisez ce que le [ScrollView contentOffset] .x est, et régler le décalage de cette valeur avec animation OFF.

+0

Cela fonctionne et semblait une façon non-hacky de le faire. Cependant, pour une raison inconnue, les indicateurs de défilement clignotent au mauvais endroit. Le code suivant arrête la décélération et évite également l'effet visuel susmentionné: \t myScrollView.showsHorizontalScrollIndicator = NO; \t myScrollView.showsVerticalScrollIndicator = NO; \t [myScrollView setContentOffset: myScrollView.contentOffset animé: NO]; \t myScrollView.showsHorizontalScrollIndicator = YES; \t myScrollView.showsVerticalScrollIndicator = YES; Code laid. – hpique

+0

Heureux que cela ait fonctionné :) Est-ce que les "indicateurs de défilement clignotent au mauvais endroit" signifient que les barres de défilement n'étaient pas sur le côté droit et le bas? Je suppose que vous avez [scrollView setPagingEnabled: YES]; et que cela pourrait peut-être confondre le scrollView un peu. ScrollView: "Les paramètres disent faire défiler jusqu'à la page suivante et dessiner les barres de défilement aux coordonnées x et y" Vous: "Arrêtez ce que vous faites et déterminez pour vous-même où dessiner les barres de défilement!". Je viens de faire quelque chose de similaire où j'ai fait un scrollView qui s'est enclenché à tous les 80 px, mais j'ai utilisé l'animation: OUI et cela pourrait lui donner un peu plus de temps pour s'adapter? – RickiG

+3

[scrollView setContentOffset: offset animé: NO] fonctionne pour moi dans iOS 4.2. –