所以我一直在尋找所有,我還沒有完全找到我在找什麼。觸摸CALayer時觸發一個動作?
我有一個視圖,然後是該視圖的子視圖。在第二個視圖中,我根據我給出的座標創建了CALayers。我希望能夠觸摸任何這些CALayers並觸發某些事物。
我發現不同的代碼看起來像他們可以幫助,但我一直沒有能夠實現它們。
例如:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if ([touches count] == 1) { for (UITouch *touch in touches) {
CGPoint point = [touch locationInView:[touch view]]; point = [[touch view] convertPoint:point toView:nil];
CALayer *layer = [(CALayer *)self.view.layer.presentationLayer hitTest:point];
layer = layer.modelLayer; layer.opacity = 0.5;
} } }
而且這個....
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
// If the touch was in the placardView, bounce it back to the center
if ([touch view] == placardView) {
// Disable user interaction so subsequent touches don't interfere with animation
self.userInteractionEnabled = NO;
[self animatePlacardViewToCenter];
return;
}
}
我還是很值得初學者到這個東西。我想知道是否有人能告訴我如何做到這一點。謝謝你的幫助。
這條線:[self.secondView.layer convertPoint:P toLayer:pointLayer]我收到一個錯誤,指出:「不兼容類型對'containsPoint'的參數1有任何想法我應該做什麼或出了什麼問題? – 2010-11-14 19:27:54
您需要確保您將CGPoint傳遞給containsPoint :.如果您不確定,請使用中間局部變量。 – 2011-12-04 17:39:34