2015-04-22 68 views
1

你如何找到被擊中的實際圖層?在CALayer上使用hitTest - 你怎麼找到哪個層被擊中(Swift)?

目前我有很多CAShapeLayers,我希望每個人都可以做點什麼。但是,當他們中的任何一個被竊聽時,都會發生一個行動。

這是我到目前爲止的代碼:

if shape.hitTest(point) != nil { 
     shape.lineWidth = 60 
    } 
    if shape1.hitTest(point) != nil { 
     shape1.lineWidth = 60 
    } 
    if shape2.hitTest(point) != nil { 
     shape2.lineWidth = 60 
    } 

這可能意味着它只是檢查是否拍了拍點是CAShapeLayer。你如何得到它檢查點是否是特定的CAShapeLayer

+0

使用'containsPoint'功能檢查。 – iphonic

回答

3

這應該工作:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 

    // Declare the touched symbol and its location on the screen 
    for touch: AnyObject in touches { 

     //get the point location 
     let location:CGPoint = (touch as! UITouch).locationInView(self.view) 

     if CGPathContainsPoint(shape1.path, nil, location, false) //shape 1 
     { 
      //touch in shape 1 
     } 
     else if CGPathContainsPoint(shape2.path, nil, location, false) //shape 2 
     { 
      //touch in shape 2 
     } 
     else if CGPathContainsPoint(shape3.path, nil, location, false) //shape 3 
     { 
      //touch in shape 3 
     } 
    } 

} 
相關問題