用于检查坐标是否在正方形内的简单if语句?

时间:2010-03-20 19:54:29

标签: iphone objective-c if-statement

我有一个UIImageView并采用原始触摸输入。我需要检查触摸是否在某个方块组内。目前......

我有这个if语句......

if(46 < touchedAt.x && touchedAt.x < 124 && 18 < touchedAt.y && touchedAt.y < 75)

但是我试图将它简化为这个......

if(46 < touchedAt.x < 124 && 18 < touchedAt.y < 75)

它不起作用。有可能像这样简化,还是我坚持使用顶部稍长的版本?底部if中的比较类型不起作用是否有原因?

2 个答案:

答案 0 :(得分:5)

我认为更好的解决方案是使用CGRectContainsPoint:

CGRect rect = CGRectMake(46, 18, 124 - 46, 75 - 18);
if (CGRectContainsPoint(rect, touchedAt))
   // do whatever

答案 1 :(得分:2)

有些语言支持“简单”版本(例如Python),但C系列不支持。

在C系列语言中,比较运算符是返回布尔值的二元运算符。一个操作员,两个参数,一个结果。尝试添加另一个比较,最后将布尔结果与下一个值进行比较。这就是您需要所有&&运算符的原因。

我不知道Objective-C,但我认为它与C所做的一样。

为简化起见,只需编写一个名为“bounds_check”或“range_check”的简单函数(可能是内联函数)或类似函数,它接受三个参数。或者更好的是,使用已经写好的。