2016-03-24 11 views
0

Ich habe eine View-Controller-Ansicht in IB ausgelegt, und insbesondere habe ich drei Ansichten, die alle identische Layout-Einschränkungen in Bezug auf ihre Frames haben und alle gesetzt wurden zu UIScrollView. Ihr Inhalt ist unterschiedlich (ich blende in einer Ansicht und dann in einer anderen, während der Benutzer durch eine Progression navigiert). Ich habe alle drei dieser Ansichten zu UIScrollView und dann ließ ich den folgenden Code in meine .m Datei in viewWillAppear:UIScrollView scrollt nicht, obwohl fast identische andere in der gleichen Ansicht Controller

NSArray <UIScrollView *> *viewsForScrolling = @[view1, view2, view3]; 
for (UIScrollView *smallView in viewsForScrolling) { 
    NSLog(@"here is the class %@", [smallView class]); 
    smallView.scrollEnabled = YES; 
    smallView.contentSize = CGSizeMake(smallView.frame.size.width, smallView.frame.size.height*1.4); 
    smallView.delegate = self; 
} 

Dies ist der Trick schön mit view1 tun und view3 aber view2nicht nicht scrollen. Ich habe überprüft, dass sie alle die gleiche Klasse haben, UIScrollView und dass sie alle mit der erwarteten Instanzvariable verbunden sind.

Der Hauptunterschied zwischenview2 und view1 ist view3 dass view 2eine UITableView enthält, für den Bildlauf nicht aktiviert ist. Das ist der einzige Unterschied, den ich im Vergleich zu den anderen Ansichten herausfinden kann.

Ich habe versucht, auch die folgenden:

  • für view2 log ich den Wert von scrollingEnabled und userInteractionEnabed und diese sind beide YES wie ich
  • Ich habe versucht, Neuordnen der Ansichten in ihrer z-Komponenten innerhalb IB wünschen würde . Dies machte keinen Unterschied.
  • versuchte ich programmatisch die contentSize von view2 wieder außerhalb der Schleife Ändern der Größe vielleicht oben denken, es ‚nicht genug‘ war, aber das war nicht der Fall
  • ich, dass scrollViewDidScroll prüft wird nicht wieder laufen, wenn view2 sichtbar ist und die anderen Ansichten sind nicht sichtbar.
  • Ich änderte die Hintergrundfarbe von view2, um sicherzustellen, dass es so groß war, wie ich dachte, dass es war und dass ich es tatsächlich berührte, als ich versuchte zu scrollen. Kein Würfel.
  • Nach dem Vorschlag unten, habe ich versucht, Benutzerinteraktion für die Tabellenansicht in view2 enthaltenen deaktivieren. Die Interaktion wurde deaktiviert, dies führte jedoch nicht zum Scrollen.
  • die Scroll-Ansicht vollständig aus view2Entfernen tut ermöglichen in view2 Scrollen aber das ist nicht wirklich eine Lösung.

    Ich könnte wirklich eine andere Reihe von Augen und zusätzliche Vorschläge, was zu beheben. Vielen Dank.

+0

Sie versuchen sollten, für die Tabelle Interaktion mit dem Benutzer zu deaktivieren Aussicht. Dies wird wahrscheinlich dazu führen, dass die Bildlaufansicht wie erwartet funktioniert. Von dort aus können Sie verschiedene Lösungen für die erneute Aktivierung der Benutzerinteraktion betrachten. –

Antwort

0

Versuchen Sie UIGestureRecognizerDelegate Protokoll Ihrer Viewcontroller entsprechen, schalten Sie es als Delegierter für view2 und Tableview und implementieren die folgenden Protokollverfahren auf diese Weise:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    return YES; 
} 
Verwandte Themen