2012-04-14 5 views
3

Ich habe viele Ansichten und Buttons erstellt, dann habe ich ISwipeGestureRecognizer grafisch erstellt. Und fügte den Erkennern "Referencing Outlet Collection" eine Menge Ansichten hinzu. Und Wischgeste funktioniert auf alle meine Ansichten. Wie ist es möglich? Storyboard erstellt automatisch verschiedene SwipeRecognizer für jede verbundene UIView?UIGestureRecognizer im Storyboard kann mehrere Ansichten verwenden?

Ich kann nicht mehr Ansichten programmatisch hinzufügen, warum?

Antwort

2

Ich habe noch nie versucht, was Sie mit dem Storyboard beschreiben, also kann ich nicht direkt antworten, aber ich kann eine Möglichkeit vorschlagen, ob mehrere Gestenerkenner erstellt werden: Fügen Sie in Ihrer Gestenaktionsmethode eine NSLog Anweisung hinzu, um die Adresse zu protokollieren des Erkenners (dies ist das erste Argument, das an die Aktionsmethode übergeben wird). Auf diese Weise werden Sie überprüfen, ob derselbe Recognizer wiederverwendet wird.

Protokollieren Sie auch die recognizer.view Eigenschaft, um zu sehen, was unter der Haube vor sich geht. Wenn Sie für alle Fälle das gleiche Ergebnis erhalten, kann optimistisch gefolgert werden, dass UISwipeRecognizer intern nicht die Eigenschaft view für irgendetwas verwendet und dass diese Information nur für Ihren Aktionsrückruf gespeichert wird, um darauf zugreifen zu können.

Was ein Rätsel wäre, ist, dass Sie nur eine Gestenerkenner und verschiedene Werte für die view Eigenschaft erhalten haben. Dies würde bedeuten, dass der Immobilienwert im laufenden Betrieb geändert wird, aber ich würde nicht erklären können, wie.

+0

Ich habe gerade diese Lösung versucht. Wirklich, es gibt mehrere Recognizer statt Single. Danke dir. – k06a

+0

Gern geschehen! Ich hatte keine Ahnung von dieser Funktion des Storyboards. gut zu wissen... – sergio

0

Sie können einer beliebigen Gestenerkennung so viele Ansichten hinzufügen, wie Sie möchten, entweder im Code oder mit dem Interface Builder. Dazu verwenden Sie die addGestureRecognizer: Methode von UIView. Beachten Sie, dass Sie den Erkenner der Ansicht hinzufügen, nicht umgekehrt.

+0

Sie möchten das vielleicht versuchen. Recognizer haben aus einem bestimmten Grund eine View-Eigenschaft, genauso wie Views eine Superview-Eigenschaft haben (beachten Sie, dass die Wörter nicht plural sind). –

2

Sie können einen Gestenerkenner mit mehreren Ansichten im Interface Builder verbinden. Sie werden alle die richtigen Nachrichten senden, wenn sie berührt werden. Sie können jedoch nicht erkennen, welche Ansicht mit der Ansichtseigenschaft des Erkenners berührt wurde. Es zeigt immer auf die gleiche Ansicht, unabhängig davon, welche Ansicht berührt wird.

Ich glaube nicht, dass Sie das gleiche mit Code machen können. Ja, das ist seltsam.

Also solange Sie nicht kümmern, welche Ansicht die Berührung ausgelöst hat, sind Sie alle gut.