我有一个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
中的比较类型不起作用是否有原因?
答案 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”的简单函数(可能是内联函数)或类似函数,它接受三个参数。或者更好的是,使用已经写好的。