Erkennung von Klicks außerhalb von UIScrollView

8

Ich habe nach dieser Technik einen Seitenumbruch implementiert ( iOS zu entwickeln. Wie UIScrollView Scroll-Event-Antwortbereich zu erweitern ? ) und es funktioniert genauso wie beabsichtigt.

Die Ansicht, die ich gescrollt habe, enthält ein paar Buttons, und ich möchte nicht nur die zentrieren / paginieren, sondern auch die links und rechts davon anklicken können. Ich kann keinen Weg finden, das zu lösen, aber ich bin noch nicht wirklich ein iOS-Jedi, hoffe aber, dass einer von euch es ist:)

Wie Sie auf dem Bildschirm sehen können, ist UIScrollView etwa ein Drittel der Breite des Fensters, die Inhaltsgröße von UIScrollView ist viel größer: etwa 1500px und enthält viele programmatisch hinzugefügte Buttons. Die coole Sache mit dieser Lösung und der Teil, der tatsächlich funktioniert, ist, dass die Tasten: 1) werden in den Scrollview gepaged 2) sind außerhalb der Scrollview sichtbar (da "Clip Subviews" für die Scrollview nicht markiert ist) 3) Die Buttons sind anklickbar, wenn sie in der Uiscrollansicht sichtbar sind.

ABER was nicht funktioniert ist einfach das: - Die Schaltflächen, die sich gerade außerhalb des Fensters befinden, erhalten keine "Klicks", wenn sie darauf klicken. Die Ereignisse werden stattdessen an die Ansicht "Unterlegen" (der weiße Teil des Fensters) weitergeleitet.

    
tommys 21.10.2011, 11:48
quelle

3 Antworten

15

Also,

Ich habe es endlich geschafft, dieses Rätsel zu lösen und die Lösung ist in zwei Teile geteilt Teile. Das Problem war, wie Sie sich erinnern, dass die Klickereignisse nicht zu den Schaltflächen, die außerhalb des UIScrollView (sichtbar) waren. Es stellte sich heraus, dass die Klicks von der zugrundeliegenden Ansicht erfasst wurden und dass es möglich ist, ihr Ziel zu manipulieren, indem man die Regeln ein wenig beugt, um herauszufinden, wer getroffen wurde. Ich bin mir nicht sicher, ob es so gemacht werden sollte, aber es hat mein Problem gelöst. :)

1) Zuerst muss die folgende Methode in der unteren Ansicht überschrieben werden so dass es die scrollview anstelle von sich selbst wenn passend zurückgibt.

%Vor%

2) Die scrollView muss ZWEI Methoden überschreiben, um die Klicks an ihre enthaltenen Objekte zu übergeben.

%Vor%

und

%Vor%

Vielen Dank für Ihre Kommentare und Hilfsbereitschaft. Ich ho

    
tommys 21.10.2011, 21:23
quelle
2

Inspiriert von der Antwort @tommys, stellt es sich heraus, dass durch Überschreiben der HinTest-Methode einer UIView und Zurückgeben der ScrollView stattdessen das Überstreichen dieser UIView mit der ScrollView gelöst werden kann.

%Vor%

Diese UIView verhält sich also wie ein erweiterter Bildlaufbereich des scrollView, die Idee ist hier. Wenn Sie die UIView-Maske über der scrollView und der gleichen Größe des Fensters platzieren, scrollt die Anzeige an einer beliebigen Stelle innerhalb des Fensters scrollView.

Hier ist das Beispiel ExtensionScrollArea

    
dichen 23.06.2015 05:32
quelle
0

Hier ist meine Version:

  1. Treffertest im Container

    %Vor%

(*) Diese markierte Zeile ist wichtig, wenn Sie Ihre Ansicht verschieben oder auf andere Weise ausblenden, z. B. wenn Sie mehrere Ansichten mit jeweils eigenen Scroll-Ansichten haben. Wenn Sie diese Zeile nicht haben, leiten Sie möglicherweise alle Ihre Berührungen auf eine Offscreen-Ansicht!

  1. überschreiben in scrollview

    %Vor%

(im hitTest des Containers können Sie zusätzliche Frames in der if-Anweisung für das Standardverhalten ausschließen):)

    
PhilipG 11.06.2014 08:16
quelle

Tags und Links