2017-05-12 9 views
3

Ich habe eine scrollview und ich möchte diese scrollview nur scrollen nach unten und es sollte nicht in eine andere Richtung scrollen. Es geht nicht um horizontal oder vertikal, aber ich möchte, dass die Scrollansicht im vertikalen Modus nur nach unten und nicht nach oben scrollt.UIScrollView sollte nur nach unten scrollen

+0

Sie müssen zum Scrollen scrollView.contentSize größer als seine Rahmengröße einzustellen. Wenn Sie horizontal scrollen möchten, setzen Sie die Breite von contentSize größer als die Bildbreite. – nynohu

+0

möglich duplicate von http://stackoverflow.com/questions/5370428/uiscrollview-disable-scrolling-in-just-one-direction – user3581248

Antwort

0

Lösung

Subclass UIScrollView und die Methoden außer Kraft setzt horizontale Scrollen zu beschränken und nur bewegen, wenn Richtung nach unten ist:

class DownwardsOnlyScrollView: UIScrollView 
{ 
    override func setContentOffset(_ contentOffset: CGPoint, animated: Bool) { 
     // restrict movement to vertical only 
     let newOffset = CGPoint(x: 0, y: contentOffset.y) 

     //only scroll if scroll direction is downwards 
     if newOffset.y > self.contentOffset.y 
     { 
      super.setContentOffset(newOffset, animated: animated) 
     } 
    } 
} 
+1

Warum möchten Sie nur nach unten scrollen und den Benutzer nicht zurück scrollen lassen? Das ist eine sehr schlechte UI-Entscheidung, Apple Richtlinien sagen, dass "der Benutzer immer die Kontrolle haben sollte, nicht die App". Indem Sie ihnen nicht erlauben, nach oben zu scrollen, nehmen Sie die Kontrolle vom Benutzer weg. – torinpitchers

+0

Der Benutzer kann mit einer Taste und nicht mit dem Bildlauf nach oben blättern. –

+0

Ich habe meine Antwort aktualisiert, die tun wird, was Sie brauchen – torinpitchers

Verwandte Themen