gezeichnete Formen klicken!?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • gezeichnete Formen klicken!?

    Hallo Zusammen,

    ich habe in einem View einige Objekte gezeichnet die geklickt werden sollen.
    Der Code:

    Quellcode

    1. - (void)drawRect:(CGRect)rect
    2. {
    3. //Dieses Objekt soll geklickt werden
    4. CGMutablePathRef Hall53 =CGPathCreateMutable();
    5. CGPathMoveToPoint(Hall53, NULL, 261.0f, 385.0f);
    6. CGPathAddLineToPoint(Hall53, NULL, 355.0f, 431.0f);
    7. CGPathAddLineToPoint(Hall53, NULL, 335.0f, 453.0f);
    8. CGPathAddLineToPoint(Hall53, NULL, 242.0f, 408.0f);
    9. CGPathCloseSubpath(Hall53);
    10. CGContextRef ctx53 = UIGraphicsGetCurrentContext();
    11. CGContextSetFillColorWithColor(ctx53, [UIColor lightGrayColor].CGColor);
    12. CGContextAddPath(ctx53, Hall53);
    13. CGContextFillPath(ctx53);
    14. CGContextSetStrokeColorWithColor(ctx53,[UIColor darkGrayColor].CGColor);
    15. CGContextSetLineWidth(ctx53, 1.0f);
    16. CGContextAddPath(ctx53, Hall53);
    17. CGContextStrokePath(ctx53);}
    Alles anzeigen


    Grundsätzlich würde ich mit UITouch arbeiten, da aber keine rechteckige Form geklickt werden soll fehlt mir der Lösungsansatz.

    Zu meiner Frage:

    Ich benötige eine Berechnungsgrundlage/Lösungsansatz um heraus zu finden ob in einem bestimmten Bereich des Views geklickt wurde, also wenn ein Klick innerhalb der Koordinaten
    (261.0f, 385.0f);(355.0f, 431.0f);(335.0f, 453.0f);(242.0f, 408.0f); erfolgt dann tu etwas.


    Kann mir jemand helfen?

    Danke ffberlin
  • ffberlin schrieb:

    Grundsätzlich würde ich mit UITouch arbeiten, da aber keine rechteckige Form geklickt werden soll fehlt mir der Lösungsansatz.

    Verwende leiber ein UIControl als Basis, dann hast Du Action-Target-Unterstützung.

    ffberlin schrieb:

    Ich benötige eine Berechnungsgrundlage/Lösungsansatz um heraus zu finden ob in einem bestimmten Bereich des Views geklickt wurde, also wenn ein Klick innerhalb der Koordinaten

    Du brauchst im Control nur die Methode pointInside:withEvent: zu überschreiben. In der Methode prüfst Du mit CGPathContainsPoint, ob der Punkt im Pfad liegt.
    „Meine Komplikation hatte eine Komplikation.“
  • Danke, ich gehe gerade die ersten Schritte was das zeichnen von Formen und co. betrifft. Kannst du mir vielleicht eine Beispiel + kurzer Erklärungen schreiben?

    macmoonshine schrieb:

    ffberlin schrieb:

    Grundsätzlich würde ich mit UITouch arbeiten, da aber keine rechteckige Form geklickt werden soll fehlt mir der Lösungsansatz.

    Verwende leiber ein UIControl als Basis, dann hast Du Action-Target-Unterstützung.

    ffberlin schrieb:

    Ich benötige eine Berechnungsgrundlage/Lösungsansatz um heraus zu finden ob in einem bestimmten Bereich des Views geklickt wurde, also wenn ein Klick innerhalb der Koordinaten

    Du brauchst im Control nur die Methode pointInside:withEvent: zu überschreiben. In der Methode prüfst Du mit CGPathContainsPoint, ob der Punkt im Pfad liegt.
  • Habe geschluckt...

    macmoonshine schrieb:

    - (BOOL)pointInside:(CGPoint)inPoint withEvent:(UIEvent *)inEvent {
    return CGPathContainsPoint(Hall53, NULL, inPoint, NO);
    }
    .... aber verschlucke mich

    Quellcode

    1. - (BOOL)pointInside:(CGPoint)inPoint withEvent:(UIEvent *)inEvent {
    2. BOOL check = CGPathContainsPoint(Hall53, NULL, inPoint, NO);
    3. if(check ==YES){
    4. NSLog(@"test");
    5. }
    6. return check;
    7. }


    funktion wir immer dreimal aufgerufen ... wie kann ich das ändern?


    LG + Danke