Ändern Sie Ihr Verhalten, indem Sie die Gestenerkenner locationInView:
überprüfen.
Wenn Sie das Bild als eine Einheit behandeln, implementieren Sie dies in Ihrem Gestenerkenner-Rückruf, um zu entscheiden, welches "Blatt" (falls vorhanden) angezapft wurde.
Wenn Sie das Bild als mehrere Bilder verarbeiten, können Sie auch in Ihrem Rückruf implementieren, oder Sie können auch in implementieren, beispielsweise gestureRecognizerShouldBegin:
Ihre Delegierten Veranstaltungen für Berührungen außerhalb des Blattes zu unterdrücken, wie gezeichnet.
EDIT: Ich wusste nicht, dass Sie vielleicht auch Hilfe suchen würden, um herauszufinden, ob ein Punkt in einem Blatt liegt. @PhillipMills ist in diesem Punkt richtig: Wir müssen wissen, wie Sie das Bild zeichnen.
FOLLOW-UP: Dies ist etwas außerhalb meines Fachgebiets.
Die einfachste Ansatz (von einem Hit-Test-Standpunkt) ist zu tun, was @ PhillipMills vorgeschlagen, mit Quartz Zeichnung und CGPathContainsPoint()
. Wenn Sie detaillierte Grafiken haben, die Sie als PNG rendern müssen, könnten Sie sicherlich einen einfachen Pfad erstellen, der (virtuell) überlagert ist, um Treffer-Tests zu ermöglichen. Andere Optionen, AFAIK, sind Hit-Tests mathematisch durchzuführen, aber Sie würden grundsätzlich CGPathContainsPoint()
aber ohne einen Pfad reinimplementieren, oder verschiedene Tricks anwenden, die die Farbe der Pixel an Ihrem Berührungspunkt betrachten, um Treffertests durchzuführen . Googeln wird einige nützliche Ergebnisse ergeben, wenn Sie diese Route gehen, aber ehrlich gesagt für eine Form so einfach wie das, was Sie gezeichnet haben, verwenden Sie einfach einen Code UIBezierPath
, um in Code neu zu erstellen.
Wie wird Ihr Bild erstellt? Wenn Sie es aus Pfaden zeichnen, können Sie diese speichern und prüfen, ob ein Pfad einen Berührungspunkt enthält. –
@PhillipMills Es ist eine .png-Datei, dadurch wird es nicht von der Anwendung gezeichnet. – ubiAle