Frage

Ich habe eine UIView-Unterklasse (CustomView für die Zwecke dieser Frage), die ihre eigene Abwicklung aller touches Ereignisse hat (Begann, Verschoben, Ended, Abgebrochen). Ich habe auch eine UIButton, die ein Geschwisterkind von CustomView ist, dass es Überschneidungen.

Zum Beispiel meine Ansicht Hierarchie sieht wie folgt aus:

  • UIView (Controller Ansicht)
    • Custom mit Rahmen (0, 0, 300, 300)
    • UIButton mit Rahmen (0, 0, 100, 50)

Ich mag die Custom Touch-Ereignisse zu erfassen, sobald der Benutzer aus dem UIButton gezogen hat. Durch die Debug-Protokollierung, scheint es, dass das UIControlEventTouchDragExit Ereignis derjenige abzufangen ist (obwohl es nicht feuern, bis die Note um 100 Pixel entfernt von der Taste ist, aber das ist auf diese Frage nicht wichtig).

Im Idealfall, wenn die Schlepp Exit-Ereignis ausgelöst wird, würde die Stopp-Taste berühren Bewegungsereignisse empfangen, würde die Custom ein touchesBegan Ereignis bekommen (auch wenn ich gefälschte mich irgendwie müssen), und alle zukünftigen Touch-Ereignisse (touchesMoved, etc ) würde den Custom gesendet werden.

Ich habe folgendes versucht, und es hat keine Wirkung:

-(void)btnTouchDragExit:(id)sender
{
    UIButton * btn = sender;
    [btn resignFirstResponder];
    [customView becomeFirstResponder];
}

ich glaube, das zugrunde liegende UITouch Objekt (die über Touch-Ereignisse konsistent ist) nicht auf der Custom-zu-Punkt neu ausgerichtet werden. Wie kann ich den gewünschten Effekt erzielen?

War es hilfreich?

Lösung

Just hitTest verwenden: withevent: um herauszufinden, was sehen „sollte“ das Ereignis werden empfangen, dann nach vorne auf das Ereignis in die entsprechende Ansicht. Sie könnten um ein wenig tanzen zu tun haben, Ereignisse abzufangen, bevor sie auf die Schaltfläche gehen, aber das ist, was hitTest: withevent:. Gemacht wurde

Andere Tipps

Sie haben canBecomeFirstResponder außer Kraft zu setzen JA zurückzukehren sonst becomeFirstResponder nichts tut. Dies ist bereits auf UIControls getan, aber nicht auf UIViews

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top