Простой оператор if для проверки, находится ли координата внутри квадрата? - PullRequest
0 голосов
/ 20 марта 2010

У меня есть 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 ]

5 голосов
/ 20 марта 2010

Я думаю, что лучшим решением было бы использование CGRectContainsPoint:

CGRect rect = CGRectMake(46, 18, 124 - 46, 75 - 18);
if (CGRectContainsPoint(rect, touchedAt))
   // do whatever
2 голосов
/ 20 марта 2010

Некоторые языки поддерживают «простую» версию (например, Python), но семейство C - нет.

В языках семейства C операторы сравнения - это двоичные операторы, которые возвращают логическое значение.Один оператор, два параметра, один результат.Попробуйте добавить еще одно сравнение, и вы в конечном итоге сравните свой логический результат со следующим значением.Вот почему вам нужны все операторы &&.

Я не знаю Objective-C, но я предполагаю, что он делает то, что делает C.

Чтобы упростить, просто напишите простую функцию (возможно встроенный), называемый "bounds_check" или "range_check" или подобным, который принимает три параметра.Или, что еще лучше, используйте тот, который уже написан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...