Ich habe das noch nicht ausprobiert, aber ich nehme an, dass ich das Scrollen der Eltern-Scroll-Ansicht deaktivieren müsste, sobald ich weiß, dass der Benutzer in der Kind-Scroll-Ansicht scrollen möchte, richtig?
Beide Scroll-Ansichten scrollen horizontal.
Wie kann ich die Scroll-Erkennung des Elternteils vorübergehend deaktivieren? Oder gibt es einen anderen Weg?
UIScrollView hat eine Eigenschaft namens scrollEnabled
, die Sie auf NO
setzen können, um das Scrollen in der übergeordneten Bildlaufansicht zu deaktivieren.
Ich habe es noch nicht ausprobiert, aber Sie können vielleicht feststellen, dass es die richtige Sache ist, dh die innere Bildlaufansicht scrollt, bis sie nicht mehr scrollen kann, an welcher Stelle die äußere Bildlaufansicht scrollt.
Es ist sehr möglich. Der einfachste Weg ist, die scrollEnabled
-Eigenschaft zu deaktivieren. Sie können auch versuchen, die UIScrollView
der äußeren contentSize
auf ihre Grenzen zu setzen, so dass sie nicht scrollt. Je nachdem, was Sie benötigen, können Sie auch No auf bounce
setzen, aber das wird Ihre Scroll-Ansicht im Grunde wie eine normale UIView aussehen lassen.
Wenn Sie die Kontrolle über alle untergeordneten UIScrollView
haben, können Sie UIScrollViewDelegate
protocol implementieren, aber wenn Sie dies nicht tun, oder Ihr Kind UIScrollView
ist wirklich ein UITableView
oder UICollectionView
, dann kannst du nicht wirklich auf das UIScrollViewDelegate
Protokoll zurückgreifen, aber vergiss nicht UIScrollView
kommt mit panGestureRecognizer
und du kannst damit spielen. Ein mächtiger, aber schwerfälliger Weg besteht darin, einen Beobachter in die panGestureRecognizer
-Eigenschaft von state
einzufügen, so dass Sie alle Ereignisse erfassen können, ohne dass Sie Delegat der betreffenden UIScrollView
sind.
Ich tat dies und es bewirkt, dass der Eltern-scrollView NICHT mehr blättert, was fein ist aber mein Kind scrollView, das über presentModalViewController gedrückt wurde, reagiert immer noch nicht auf Scroll-Ereignisse (zB Scrollen nach oben oder unten) . Mir fehlt offensichtlich etwas ...
BEARBEITEN : Hat es endlich geschafft, mit 'scrollEnabled' in der Elternansicht zu arbeiten. Danke.
Ich hatte das gleiche Problem, bis ich die contentSize der inneren ScrollView dynamisch hoch gesetzt habe:
%Vor%Offensichtlich ist dies nur ein hartkodiertes Beispiel. Sie sollten die Höhe einstellen, die benötigt wird, um den gesamten Inhalt der Ansicht anzuzeigen, und möglicherweise wird am Ende kein Scroll benötigt.
Es scheint, dass die Höhe der scrollView mit dem IBuilder nicht ausreichend ist, also wurde kein scroll benötigt und deshalb dachte ich, dass das Sweep-Ereignis nicht die innere scroll erreicht.
Hoffe, das hilft!
Tags und Links iphone cocoa-touch uiscrollview uikit