让 UITouch 仅在触摸特定颜色时执行任务

Posted

技术标签:

【中文标题】让 UITouch 仅在触摸特定颜色时执行任务【英文标题】:Have UITouch only perform task when touching certain color 【发布时间】:2010-07-19 00:36:12 【问题描述】:

只有当我在 UIImage 视图中触摸某种颜色时,我才能让 UITouch 识别并执行某项任务。

例如:

我有一张街道的图像。这条街有灰色的建筑物和一条白色的道路。如果我触摸一座建筑物,我不希望发生任何事情,但如果我触摸一条白色的道路,我想将我触摸的那部分突出显示为浅蓝色。

【问题讨论】:

【参考方案1】:
    捕捉图像上的触摸事件 使用触摸位置获取该位置的像素颜色。 决定颜色代表道路还是建筑物。

获取精确的触摸坐标

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView: imageView];

    // Here are your touch coordinates
    touchPoint.x
    touchPoint.y

在该位置获取像素颜色:code to get pixel color。

判断颜色是否代表道路。

// 230 used as example, Experiment to find a good value
if (red >230 && green >230 && blue >230)

    // turn street blue

【讨论】:

要获得单个像素值,请随时查看gist.github.com/1377949

以上是关于让 UITouch 仅在触摸特定颜色时执行任务的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView:仅在允许时滚动

UITouch && UIGestureRecognizer

如何在 iOS 上从 UITouch 找到最近的车站点

iOS开发UITouch触摸API简介

iOS开发UITouch触摸API简介

检测 SpriteKit 中节点特定区域的触摸