iOS hinzufügen tapGesture, um mehrere Ansichten
Habe ich mehrere Ansichten definiert, die in meinem Haupt-Ansicht. Ich möchte hinzufügen, single-tap-Geste, um alle diese Ansichten. Unten ist der code, den ich geschrieben habe, aber dieses Register eine tap Geste auf den letzten Blick, den ich hinzufügen. Also in dem code unten, Tippen Sie auf registriert ist nur für messagesView
& nicht für die anderen Ansichten. Ich habe 2 Fragen:
- Wie registriere ich die gleichen tapGesture auf mehrere Ansichten zu?
- Vermuten lässt bekomme ich diese zu arbeiten, nun alle einzelnen taps aus diesen Ansichten goto die gleiche Funktion aufgerufen
oneTap
. In dieser Funktion, wie kann ich unterscheiden, von denen das Tippen kommt?
Code:
@synthesize feedsView, peopleView, messagesView, photosView;
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTap:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[feedsView addGestureRecognizer:singleTap];
[peopleView addGestureRecognizer:singleTap];
[messagesView addGestureRecognizer:singleTap];
//[photosView addGestureRecognizer:singleTap];
[singleTap release];
return;
}
InformationsquelleAutor der Frage Srikar Appalaraju | 2011-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem, wo es nur noch die Letzte Ansicht. Gibt es vielleicht eine bessere Lösung, aber ich gerade eine tag-Geste für jede Ansicht und Verband Sie mit dem gleichen Selektor-Methode (
oneTap:
in Ihrem Fall). Um zu unterscheiden, welche Ansicht aktiviert die Methode, Sie können einfach markieren Sie Ihre AnsichtenfeedsView.tag = 0; peopleView.tag = 1;
und so weiter. Dann, wenn die Methode aufgerufen wird:InformationsquelleAutor der Antwort justin
Sie legen ein UIGestureRecognizer auf mehrere Ansichten zu? Keine.
Zwei Optionen:
a) Geben Sie alle
UIGestureRecognizer
seine eigene Aktion. Pluspunkte dieses Ansatzes: starke Entkopplung. Nachteile: mehr Wiederverwendung von code. Aber Sie kann verringert werden, die die Wiederverwendung von code durch die Schaffung von Methoden für die gemeinsamen Funktionalitäten und rufen Sie die Methoden in den verschiedenen Aktionen.b) Geben Sie alle anzeigen, auf die Sie fügen Sie ein
UIGestureRecognizer
einen einzigartigen tag. Dann verwenden Sie eine switch-Anweisung in einer gemeinsamen Aktion mit dem Absender-Ansicht Tags wie in dem Fall. Pluspunkte: weniger code-Wiederverwendung. Minus: enger Kopplung. So etwas wie dieses:Dann:
Obwohl es normalerweise am besten zu gehen mit der option, dass entkoppelt, wenn alle Ihre Handlungen sind sehr ähnlich, und das scheint hier der Fall sein, und Sie sind ganz sicher, dass Sie bleiben sehr ähnlich in der Zukunft, dann option b) mit den tags ist wahrscheinlich die bessere Wahl.
P. S. Es ist nicht erforderlich, explizit festgelegt
numberOfTapsRequired
&numberOfTouchesRequired
zu1
da Sie beide zu1
standardmäßig. Bestätigen Sie diese, indem Sie Befehl und klicken aufnumberOfTapsRequired
in Xcode.InformationsquelleAutor der Antwort ma11hew28
1 verwenden Sie die Methode hitTest:
2 fügen Sie DIE Einzelnen TapGesture multi-Ansichten, nur die Letzte Ansicht gearbeitet.
InformationsquelleAutor der Antwort Ken
//Add Tippen-Geste in swift 4
//VERWENDUNG in der Sicht laden:
tapGestures(Ansicht: view1)
tapGestures(Ansicht: ansicht2)
tapGestures(Ansicht: view3)
InformationsquelleAutor der Antwort kdhingra7