2010-10-17 2 views
0

У меня есть вид UIView как вид контейнера/держателя. Внутри что у меня есть группа UIView с (иконки)Испытание на удар по группе на подуровнях

Считайте это похоже на SpringBoard- в iPhone в вас есть SBIconList (UIView подкласс) с группой SBIcon с (также UIView подклассов)

Так далеко, каждый значок моих икон перетаскивается, но у меня возникают проблемы с записью кода обнаружения столкновений, чтобы обнаружить попадание между значком перетаскивания и другим значком.

Моя базовая установка до сих пор: я пишу хит-тестовый код в рамках значка touchesMoved. Затем я «за» прохожу через каждый подсмотр вида контейнера (каждый значок) и попробую CGRectContaninsPoint(currentSubviewFrame, touchPoint). currentSubviewFrame является рамкой для значка в текущем цикле цикла «для». И touchPoint является x/y сенсорной точки на экране.

Проблема заключается в том, что, поскольку код написан под видом одного из подзонов контейнера, координаты, похоже, становятся относительно подсмотра. Например, координата touchPoint (глобально) должна быть, скажем, 160,240 (центральный экран), но эта координата NSLog ed as, скажем 30,30. (Центральный по отношению к значку 60x60) Тот же случай для currentSubviewFramex, y, width & height.

Следует упомянуть, что этот код имеет, который будет подпадать под сферу действия события touchesMoved subview.

Любая помощь будет оценена по достоинству. Заранее спасибо :)

ответ

1

Посмотрите на тезисах функций для преобразования координат между видами:

- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view 
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 

Вы можете использовать -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event на все подвидах (за исключение того, что вы тащите), чтобы выяснить, произошло столкновение.

+0

А, именно то, что мне нужно! Спасибо! :) – Jamie

+0

Отлично! Если это ответили на ваш вопрос, отметьте ответ как принятый. – aegzorz

Смежные вопросы