Erkennung der UIScrollView-Position

8

Ich versuche, ein UIScrollView als Navigationsgerät in meiner iOS-Anwendung zu verwenden. Grundsätzlich möchte ich, dass die Anwendung basierend auf der Position eines Paging-fähigen UIScrollView spezifische Inhalte lädt. Es ist wie ein Navigationsrad.

Momentan habe ich eine zweiseitige (2 * 320) Scrollansicht, und ich benutze die% delate-Methode scrollViewDidEndDragging und contentoffset.x , um den entsprechenden Inhalt zu laden. Ich versuche, die Position des Bildlaufs als solche zu bestimmen:

%Vor%

Mein Problem ist, dass ich entweder nicht verstehe, wie man mit contentoffset arbeitet, oder es ist nicht geeignet, um mit meinem Problem umzugehen. So oder so, ich stecke fest. Kann mich jemand wissen lassen, wo ich falsch gelaufen bin, und / oder mir einen effizienteren Weg zeigen, um die Scrollview-Position zu bestimmen?

Ich bin dumm, ich habe vergessen zu erwähnen, was das Problem ist ... Grundsätzlich kann ich die Position der Scrollview nicht verfolgen. Wenn ich zur zweiten Seite gehe, registriert es nur Änderungen, wenn ich über das 620-Limit gehe (nach rechts springen). Aber wenn ich zurück zur Startposition gehe (Seite 1), registriert es die Änderungen. Mit anderen Worten, mein Tracking ist nicht korrekt.

Delegieren und alles andere funktioniert gut, ich melde sie!

    
Gergely Kovacs 23.12.2012, 16:07
quelle

4 Antworten

16

Es ist schwer zu sagen, weil Sie nie speziell erwähnt haben, was das Problem ist, aber ich werde ein paar Vermutungen anstellen.

Wenn die Delegate-Methode überhaupt nicht aufgerufen wird, müssen Sie daran denken, die delegierten Scroll-Ansichten festzulegen:

[myScrollView setDelegate:self];

Sonst besteht das Problem bei der Verwendung von scrollViewDidEndDragging zur Erkennung des Scroll-View-Offsets darin, dass der Offset an dem Punkt geprüft wird, an dem Sie das Ziehen stoppen, das innerhalb der Zielseiten rect oder innerhalb der Startseiten rect liegen könnte. Als Alternative würde ich vorschlagen, dass Sie scrollViewDidEndDecelerating verwenden, um den Inhaltsoffset zu überprüfen, wie er aufgerufen wird, sobald die Bildlaufansicht auf der Zielseite zum Stillstand kommt.

%Vor%     
Mick MacCallum 23.12.2012, 17:08
quelle
7

Ich denke, das könnte dir helfen :). Mit scrollViewDidScroll erhalten Sie immer die genaue Position Ihrer scrollView:

%Vor%

NSLog(@"Position: %g", scrollView.contentOffset.x);

Vergessen Sie nicht den Delegaten UIScrollViewDelegate in Ihrer .h-Datei.

    
filou 23.12.2012 17:10
quelle
4

Hier eine Lösung, um die aktuelle Position (Seite) als Ganzzahl zu erhalten: Verwenden Sie scrollViewDidEndDecelerating: methode:

%Vor%     
auerd 22.09.2014 22:17
quelle
0

Verwenden von UIScrollViewDelegate,

%Vor%     
Alvin George 30.05.2016 07:48
quelle