UIBezierPath Pfad Form Clickble und Ziehbar
Ich habe eine UIBezierPath innerhalb einer Ansicht. Ich will zeigen, eine Warnung, wenn ich Sie auf die Form, sondern das, was tatsächlich passiert ist, dass die Warnmeldung nicht, nur wenn ich Sie innerhalb der Form, aber auch wenn ich auf einer beliebigen Stelle innerhalb der Ansicht.
Wie ändere ich diesen code, so dass nur, wenn ich klicken Sie in der farbigen Form, bekomme ich die Warnung?
Auch, wie bekomme ich die Form ziehbar auf dem Bildschirm?
#import "draw2D.h"
@implementation draw2D
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
//Initialization code.
}
return self;
}
- (void)drawRect:(CGRect)rect {
UIBezierPath* aPath = [UIBezierPath bezierPath];
[aPath moveToPoint:CGPointMake(200.053,79.688)];
[aPath addLineToPoint:CGPointMake(100.053,179.688)];
[aPath addLineToPoint:CGPointMake(304.412,280.125)];
[aPath addLineToPoint:CGPointMake(308.055,298.513)];
[aPath addLineToPoint:CGPointMake(200.053,79.688)];
[aPath closePath];
[[UIColor blackColor] setStroke];
[[UIColor redColor] setFill];
CGContextRef aRef = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(aRef, 50, 50);
aPath.lineWidth = 5;
[aPath fill];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Some message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles: nil];
//After some time
[alert show];
[alert release];
}
- (void)dealloc {
[super dealloc];
}
@end
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der beste Weg, dies zu tun ist, zu schlagen-testen Sie das bezier-Pfad. Dies erfordert Zugriff auf den Pfad außerhalb der drawRect: - Methode. Seit Ihr Weg ist immer das gleiche, Sie können dies leicht tun mit statischen Variablen.
Bearbeiten für eine benutzerdefinierte Ansicht, die nur auf Ereignisse reagiert, in den Pfad hinein.
Diese Methode verwenden, werden Sie nicht brauchen, um zu überprüfen, ob der touch innerhalb der Pfad in touchesBegan, weil Sie nicht alle Ereignisse, welche die würde der test als nicht bestanden. Sie können verschieben Sie die Ansicht durch ändern der frame origin den gleichen Betrag, den der touch verschoben.