Ich habe mehrere CAShapeLayers in einer Ansicht und möchte sie ziehen (die Form ist unregelmäßig) Bitte geben Sie einige Vorschläge dafür.Gibt es hitTest: (CGPoint) in CAShapeLayer?
Antwort
CALayer
und ihre Unterklassen sind nicht Teil der Responder-Kette, und sie stammen nicht von UIResponder
. Daher wird touchesBegan:withEvent:
usw. niemals auf einer Unterklasse CALayer
aufgerufen. Sie müssen die Berührung auf einem der Hosts in der Ebenenhierarchie UIView
erkennen. Dann verwenden Sie hitTest:
in den Touchhandlern, um zu erkennen, welche Schicht berührt wurde.
Es wird auf Sie einfacher, wenn Sie eine UIView
Unterklasse mit einem CAShapeLayer
als Trägerschicht wie folgt zu erstellen:
@implementation MyShapeView
- (CALayer *)layerClass {
return [CAShapeLayer class];
}
@end
Dann fügen Sie Instanzen der benutzerdefinierten als Subviews Ihre Hauptansicht Ansicht. Danach können Sie die Methoden UIResponder
oder, noch besser, eine UIGestureRecognizer
verwenden, um das Ziehen zu behandeln. Ich empfehle die Verwendung von Gestenerkennung, wenn Sie iOS 3.2 oder höher als Ziel verwenden können. Sie machen die Ereignisbehandlung viel einfacher.
danke neror, ich werde das versuchen und wiederkommen ... – theDebugger
- 1. (UIView *) hitTest im Viewcontroller?
- 2. CAShapeLayer 1px Strichlinie
- 3. Fenster zurück in hitTest funktioniert nicht
- 4. Center CAShapeLayer in benutzerdefinierte UIView Unterklasse
- 5. hitTest: withevent: UIEvent allTouches ist leer
- 6. UIView's -hitTest: withEvent: dreimal aufgerufen?
- 7. HitTest über Windows?
- 8. Wie in zu CAShapeLayer
- 9. Sine CAShapeLayer als Maske von CALayer
- 10. CAShapeLayer Pfadfrühlingsanimation nicht "überschießend"
- 11. iphone - CGAffineTransformRotate auf Punkt in Hittest anwenden
- 12. erkennen CAShapeLayer Touch
- 13. Hittest in Polardiagramm mit mehreren Serien
- 14. CGPoint relativ zur Ansicht
- 15. Überlagerung CAShapeLayer Umriss
- 16. MKMapPoint zu CGPoint
- 17. NSLog mit CGPoint Daten
- 18. Animiere einen CAShapeLayer-Kreis in ein Dreieck mit abgerundeten Ecken
- 19. CAShapeLayer ist nicht sichtbar
- 20. Animieren CAShapeLayer Größenänderung
- 21. CGPoint lokal zu global Ausgabe
- 22. Erstellen einer UIButton mit Form CAShapeLayer
- 23. Touch Erkennen Sie, wenn Sie auf CAShapeLayer in Swift
- 24. Ist es möglich NSCL-Strukturen (wie CGRect oder CGPoint) NSLog?
- 25. Wie skaliert man einen CAShapeLayer
- 26. Angrenzend CAShapeLayer Anti-Aliasing-Ausgabe
- 27. CGPoint zu NSValue und Reverse
- 28. Aktionsskript 3 hittest if Anweisung und Koordinate
- 29. Rahmen und Grenzen von CAShapeLayer
- 30. CAShapeLayer Probleme - nicht in NSTableView Zeichnung
Da CAShapeLayer von CALayer erbt, sollten Sie sie mit hitTest greifen können. –
Hallo Alec, ich kann den Test nicht erkennen, was ich tue ist, während ich den CAShapelayer dort berührt habe, wurde kein Ereignis bei touchBegans ausgelöst: withEvent: in der Unterklasse von CAshapelayer. – theDebugger