2016-04-16 6 views
0

Ich habe beim Start einen UIViewController, der zwei einzelne XIB-Ansichten lädt, durch die der Benutzer streichen kann. Ich möchte Code auslösen, sobald der Benutzer 2/3 über die gesamte Breite (Panning-Breite beider Ansichten) wischt, aber meine Erkennung ist nicht live.Live-Erkennung der scrollView-Position in der Panoramaansicht

Hier ist mein Code so weit ...

let vc0 = ViewController0(nibName: "ViewController0", bundle: nil) 
let vc1 = ViewController1(nibName: "ViewController1", bundle: nil) 

class ViewController: UIViewController { 

    @IBOutlet weak var scrollView: UIScrollView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.addChildViewController(vc0) 
     self.scrollView.addSubview(vc0.view) 
     vc0.didMoveToParentViewController(self) 

     var frame1 = vc1.view.frame 
     frame1.origin.x = self.view.frame.size.width 
     vc1.view.frame = frame1 


     self.addChildViewController(vc1) 
     self.scrollView.addSubview(vc1.view) 
     vc1.didMoveToParentViewController(self) 

     self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height - 66) 

     // This doesn't work 
     scrollView.delegate = self 


     // If the user user swipes 2/3 in (or it can be any other offset that's practical) 
     if (scrollView.contentOffset.x > (self.view.frame.size.width*2)*(2/3)) { 
      // Code I'd like to execute 
      // ... 
     } 
} 

Wie ist das möglich mit Swift?

Antwort

1

Sie sollten die Delegierten der Scroll-Ansicht verwenden

scrollView.delegate = self 

mit und erklären, dass Ihre Klasse UIScrollViewDelegate implementiert:

class ViewController: UIViewController, UIScrollViewDelegate 

Dann scrollViewDidScroll implementieren, die jedes Mal, wenn Scroll des Scrolling geändert wird aufgerufen wird.

func scrollViewDidScroll(scrollView: UIScrollView) { 
    // If the user user swipes 2/3 in (or it can be any other offset that's practical) 
    if (scrollView.contentOffset.x > (self.view.frame.size.width*2)/(2/3)) { 
    // Code I'd like to execute 
    // ... 
    } 
} 
+0

Einstellen des Delegaten hat nicht funktioniert. Ich habe meinen Code aktualisiert, um einige Einblicke zu erhalten, wie mein Pan-Scrolling funktioniert. Vielleicht mache ich es auf eine andere Weise, die mit Ihrer Lösung kollidiert? – theflarenet

+1

Ich habe meine Antwort aktualisiert, füge einfach 'UIScrollViewDelegate 'zu deiner Klassendeklaration hinzu – Jelly

+0

Du bist großartig und hast mir heute Nacht viele Kopfschmerzen erspart. So funktioniert es !!! Vielen Dank für die Anleitung! :-) – theflarenet