2 Stimmen

Gibt es hitTest:(CGPoint) in CAShapeLayer?

Ich habe mehrere CAShapeLayers in einer Ansicht und ich möchte sie ziehen (die Formen sind unregelmäßig) Bitte geben Sie einige Vorschläge für die Durchführung.

0voto

Nathan Eror Punkte 12388

CALayer und ihre Unterklassen sind nicht Teil der Responderkette und stammen nicht von UIResponder . Deshalb, touchesBegan:withEvent: usw. werden niemals bei einem CALayer Unterklasse. Sie müssen die Berührung auf einem der Hosts erkennen UIView s in der Ebenenhierarchie. Dann verwenden Sie hitTest: in den Touch-Handlern, um zu erkennen, welche Ebene berührt wurde.

Es wird für Sie einfacher sein, wenn Sie eine UIView Unterklasse mit einer CAShapeLayer als Trägerschicht wie hier:

@implementation MyShapeView

- (CALayer *)layerClass {
  return [CAShapeLayer class];
}

@end

Fügen Sie dann Instanzen Ihrer benutzerdefinierten Ansicht als Unteransichten zu Ihrer Hauptansicht hinzu. Danach können Sie die UIResponder Methoden oder, noch besser, eine UIGestureRecognizer um das Ziehen zu bewältigen. Ich empfehle dringend die Verwendung von Gestenerkennern, wenn Sie iOS 3.2 oder höher anvisieren können. Sie machen die Ereignisbehandlung viel einfacher.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X