我在iphone模拟器上画了一个圆圈,使用石英2d和填充。有没有办法可以检测到该圈子上的触摸事件?
由于 Harikant Jammi
答案 0 :(得分:7)
如果您拥有该圈的CGPath,则可以获取用户手指落入touchesBegan的CGPoint,并使用以下代码检查它是否属于此CGPath。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:self.view];
// Depending on your code, you may need to check a different view than self.view
// You should probably check the docs for the arguments of this function--
// It's been a while since I last used it
if (CGPathContainsPoint(yourCircle, nil, location, nil)) {
// Do something swanky
} else {
// Don't do teh swank
}
}
答案 1 :(得分:0)
我还没有测试过它,但是如果圆圈周围的空间设置为0的alpha值,那么也许只有圆圈会接受触摸。您可能必须为视图关闭isOpaque,并且没有背景颜色。
如果这不起作用,那么您必须处理点击位置并编写代码以查看它是否在圈子区域内。
答案 2 :(得分:0)
只需在该圆圈上放置一个带有0.0 alpha的自定义隐形按钮,这样该按钮将始终能够检测到触摸。