我得到了一个UIImageView,该图像由激活了透明通道的两个图像组成。

该视图如下所示:
image

我希望能够精确检测到中心圆内的触摸并将它们与外部圆内的触摸区分开。

我正在考虑基于两个圆之间的差异的碰撞检测算法。首先在外层进行测试,看是否有碰撞,然后再在内层进行测试。如果位于内层,则激活内部按钮,否则激活外部按钮。

任何帮助或建议吗?

我应该创建一个github存储库,以便每个人都可以贡献它吗?

最佳答案

这里有什么可以帮助您的:

    UIImageView *myImageView;
 // In viewDidLoad, the place you are created your UIImageView place this:

myImageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tapInView = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapInImageView:)];
[myImageView addGestureRecognizer:tapInView];

}

-(void)tapInImageView:(UITapGestureRecognizer *)tap
{
CGPoint tapPoint = [tap locationInView:tap.view];

CGPoint centerView = tap.view.center;

double distanceToCenter = sqrt((tapPoint.x - centerView.x)*(tapPoint.x - centerView.x) + (tapPoint.y - centerView.y)*(tapPoint.y - centerView.y) );
if (distanceToCenter < RADIUS) {
    // It's in center
} else {
    // Touch outside
}

09-30 10:21