UIButton-Ereignisse. Was ist der Unterschied?

71

Ich habe ein Problem festgestellt, bei dem meine Schaltfläche "gedrückt" bleiben sollte, während Popover angezeigt wird, das von ihr aufgerufen wurde. Popover ist die Auswahl für einige Filter und der Filter wird auf der Schaltfläche selbst angezeigt. Wenn ich darauf tippe und es Popover anzeigt, wird es auf jeden Fall abgewählt.

Ich denke, ich muss das Verhalten bei Berührungsereignissen neu definieren und dafür sorgen, dass es nicht auf Standard reagiert touch up inside. Dann habe ich mich gefragt, wofür andere Ereignisse verantwortlich sind. Aber ich konnte keine Ereignisliste in der iOS-Bibliothek finden und in StackOverflow gibt es nur Fragen zum falschen Verhalten von touch up insideoder touch down.

Was ist der Unterschied zwischen Touch-Events?

  1. Touch Cancel - Wenn Sie die Taste berühren, aber Ihren Finger wegbewegen und die Auswahl aufgehoben bleibt?
  2. Aufsetzen - direkt beim Tippen.
  3. Aufsetzen wiederholen?
  4. Touch Drag Enter?
  5. Touch ziehen beenden?
  6. Touch Drag Inside?
  7. Berühren Sie ziehen nach draußen?
  8. Nachbessern im Inneren - wenn Sie auf die Schaltfläche tippen und sie loslassen, bleibt sie in ihren Grenzen. Es ändert den UIButtons-Status in Normal.
  9. Draußen nachbessern - wenn Sie auf die Taste tippen und sie loslassen, ohne die Grenzen zu überschreiten?

andere IBActions werden nicht von UIButton gesendet, oder? Wie verändern diese Ereignisse auch das Erscheinungsbild von UIButton? Wie highlightedoder selected?

Ich würde mich über einen Link zu einem guten Artikel über IBActions freuen, da ich ihn nicht finden konnte.

Protheus
quelle
@janusfidel vielen Dank, es hat meine Frage vollständig beantwortet :)
Protheus

Antworten:

147

Aus Apples Dokument fürUIControlEvents :

  1. UIControlEventTouchCancel

    Ein Systemereignis, das die aktuellen Berührungen für die Steuerung abbricht.

  2. UIControlEventTouchDown

    Ein Touchdown-Ereignis in der Steuerung.

  3. UIControlEventTouchDownRepeat

    Ein wiederholtes Aufsetzereignis in der Steuerung; Für dieses Ereignis ist der Wert der UITouch tapCount-Methode größer als eins.

  4. UIControlEventTouchDragEnter

    Ein Ereignis, bei dem ein Finger in die Grenzen des Steuerelements gezogen wird.

  5. UIControlEventTouchDragExit

    Ein Ereignis, bei dem ein Finger von einem Steuerelement nach außerhalb seiner Grenzen gezogen wird.

  6. UIControlEventTouchDragInside

    Ein Ereignis, bei dem ein Finger innerhalb der Grenzen des Steuerelements gezogen wird.

  7. UIControlEventTouchDragOutside

    Ein Ereignis, bei dem ein Finger direkt außerhalb der Grenzen des Steuerelements gezogen wird.

  8. UIControlEventTouchUpInside

    Ein Ausbesserungsereignis in der Steuerung, bei dem sich der Finger innerhalb der Grenzen der Steuerung befindet.

  9. UIControlEventTouchUpOutside

    Ein Ausbesserungsereignis in der Steuerung, bei dem sich der Finger außerhalb der Grenzen der Steuerung befindet.

Protheus
quelle
4
Nur um zu verdeutlichen, dass durch einen "Ausbesserungs" -Ereignis der Finger entfernt wurde, oder? Denn das eine Reihe verschiedener Dinge bedeuten könnte (zB klauen leicht nach oben oder klauen nach oben und Finger zu entfernen, oder es könnte bizarr die die eigentliche Bedeutung des Wortes beziehen Touch-up ).
Parthian Shot
1
@ParthianShot Es ist, wenn der Benutzer seinen Finger vom Bildschirm wegbewegt, yep.
Protheus
Es klingt wie DragEnterund DragInsidesind sehr ähnlich?
Crashalot
2
@Crashalot Meine Lesung ist, dass das Ziehen nach innen das Bewegen Ihres Fingers innerhalb der Ansicht einschließen würde, während das Ziehen beim Eingeben nur Grenzüberschreitungen betreffen würde
Sam
1
Touchdown-Geste wird nicht immer erkannt. Es kann manchmal erkannt werden. Ich vermute, dass dies an der Layoutposition des Storyboards liegt. Irgendeine Idee warum sollte es so sein? @Protheus
Cherry_thia
11

Aufgeführt in, was ich in Betracht ziehen würde, Reihenfolge der allgemeinen Verwendung / Wahrscheinlichkeit des Auftretens für eine normale Schaltfläche:

UIControlEventTouchDown : Der Benutzer hat auf die Schaltfläche getippt . Dies wird auf den Kontakt zwischen Finger und Stift ausgelöst.

UIControlEventTouchUpInside : Der Benutzer hat auf die Schaltfläche getippt . Dies wird durch den vom Bildschirm zurückgezogenen Finger / Stift-Kontakt ausgelöst.


Nützlich für Schieberegler und Drag-Events wie das Verschieben einer Komponente. Die folgenden sind in der Reihenfolge ihres Auftretens:

UIControlEventTouchDragInside : Wird ausgelöst, wenn sich der Finger in den Tastenbereich zieht.

UIControlEventTouchDragExit : Wird während einer Ziehbewegung ausgelöst. Es wird nur einmal aufgerufen, da der Finger / Stift des Benutzers die Grenzen der Schaltfläche verlässt.

UIControlEventTouchDragOutside : Wird während einer Ziehbewegung nach 'UIControlEventTouchDragExit' ausgelöst und wird kontinuierlich aufgerufen , solange die ursprüngliche Berührung fortgesetzt wird.

UIControlEventTouchUpOutside : Dies ist einfach der Finger / Stift, der angehoben wird, ABER nur, wenn sich der Finger / Stift nicht mehr innerhalb der Grenzen der Schaltfläche befindet. Das Wichtige (und wahrscheinlich offensichtlich) ist, dass sich die Berührung irgendwann innerhalb der Schaltfläche befunden haben muss, um dieses Ereignis mit der Schaltfläche zu verknüpfen.

Hinweis: Nach meinem Verständnis kann das oben Genannte hilfreich sein für:

  1. Schieberegler: Wie zu erwarten war, war die Berührung möglicherweise beabsichtigt, aber aufgrund der schnellen Wischbewegung kann die Fingerbewegung schlampig sein und sich außerhalb des Schiebereglerbereichs anheben.
  2. Verschieben von Komponenten Wie beim Verschieben von Objekten auf einem Bildschirm soll die Bewegung erfolgen, wenn der Finger / Stift den Rand der Komponente / des Objekts berührt.

Andere Ereignisse:

UIControlEventTouchCancel : Etwas außerhalb der Kontrolle des Benutzers bricht seine Berührungsaktion ab. Stellen Sie sich das als etwas vor, das auf der Telefonseite "schief geht".

UIControlEventTouchDownRepeat : Möchten Sie erkennen, wann Ihr Benutzer verrückt ist und wütend auf eine Schaltfläche tippen? Möchten Sie feststellen, ob sie sich noch im Windows-Modus befinden und versuchen, einen Doppelklick auszuführen? Oder vielleicht haben Sie eine Schaltfläche entworfen, um etwas anderes zu tun, wenn sie zweimal tippen. Diese Veranstaltung hilft bei all diesen!


Verweise:

SO 1 : Unterschied zwischen UIControlEventTouchDragOutside und UIControlEventTouchDragExit

SO 2 : Was ist UIControlEventTouchCancel?

Dave G.
quelle