Lehnt eine Ansicht ab, wenn ein Benutzer irgendwo außerhalb der Ansicht tippt

7

Ich habe eine sehr komplexe App mit vielen gestapelten Ansichten, die viele Schaltflächen, Zeichnungsbereiche und andere benutzerdefinierte Touch-Funktionen enthalten. Ich zeige eine ziehbare Helferansicht an, die über allen anderen Ansichten sein kann. Ich muss diese Ansicht ablehnen, wenn der Benutzer irgendwo außerhalb der Hilfsansicht tippt. Ich habe versucht, mehrere UIWindows zu verwenden und Gesture recognizers dem UIWindow hinzuzufügen.

    
Samhan Salahuddin 16.04.2013, 10:41
quelle

3 Antworten

14

Es ist einfach, eine transparente Schaltfläche hinzuzufügen, deren Grenzen den Grenzen der Superansicht entsprechen. Und die Superview fügen Sie die transparente Schaltfläche unterhalb Ihrer Hilfsansicht ein.

Die transparente Schaltfläche fügt ein click -Ereignis hinzu, das die Hilfesicht und die transparente Schaltfläche selbst ausblenden kann.

Zum Beispiel:

%Vor%

und die Methode dismissHelper: können dies tun:

%Vor%     
Guo Luchuan 16.04.2013, 11:35
quelle
8

Sie können überprüfen, welche Ansicht berührt wird, indem Sie die Berührungen durchgehen und die Eigenschaft .view der Berührung betrachten. Es spiegelt die Sichtweise wider, aus der die Ansicht stammt.

Wenn Sie davon ausgehen, dass Sie einen Verweis auf Ihre Ansicht (entweder über ein IBOutlet oder auf andere Weise) in Ihrer Ansicht namens "myView" beibehalten, funktioniert das Folgende.

In Ihrer .m-Datei. Die touchesBegan: Funktion wird jedes Mal ausgelöst, wenn der Benutzer einen Finger berührt. Wir durchlaufen die Berührungen, um zu sehen, ob die ursprüngliche Ansicht der Berührung NICHT gleich "myView" ist. Dieser Vergleich kann auch durch Überprüfen der Klasse, des Tags oder einer anderen Eigenschaft, die Sie zum Identifizieren Ihrer Ansicht verwenden, erfolgen. Beispiele unten angegeben.

%Vor%

Oder bei Verwendung eines Tags:

%Vor%     
Balu 16.04.2013 10:51
quelle
1

Erstellen Sie eine Hittestintercept-Ansicht. Dies kann dazu führen, dass die Ansicht unten Ereignisse wie zuvor behandelt.

%Vor%

HtiTestInterceptView.m

Importieren Sie "HitTestInterceptView.h"

%Vor%

benutze es dann in der Toast-Ansicht

%Vor%     
GoInterface 20.09.2016 07:02
quelle

Tags und Links