2010-03-29 3 views
3

Недавно я нашел asked a question относительно обнаружения столкновений в субподзорах с идеальным ответом. Я пришел к последнему вопросу о реализации столкновения в моем приложении, но я столкнулся с новой проблемой.Продвинутый способ использования метода UIView convertRect для обнаружения CGRectIntersectsRect несколько раз

Использование convertRect было хорошим получением CGRect из подвид. Мне было нужно, чтобы это было немного сложнее, поскольку это были не совсем прямоугольники, которые нужно было обнаружить.

на XCode Я создал абстрактный класс под названием TileViewController. Среди других свойств он имеет IBOutlet UIView * detectionView; Теперь у меня есть несколько классов, которые наследуются от TileViewController, и каждый класс имеет несколько представлений, вложенных в обнаружение, которое я создал с помощью Interface Builder.

Идея заключается в том, что объект может быть определенной формы или размера, я программно разместил эти «черепичные» точки обнаружения в центре центра каждого объекта. Пользователь может выбрать элемент и взаимодействовать с ним, в этом случае передвиньте его.

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

Упрощенная версия этого метода работает. Использование CGRectIntersectsRect на самом детектировании, поэтому мне интересно, если я зацикливаюсь и проверяю представления правильно?

Я не был уверен, сравнивался ли он в одном и том же представлении, но я подозреваю, что это так, я немного изменил код в какой-то момент, вместо сравнения значений в self.view. Я взял UIViews viewController.detectView в interactiveView.detectView, но результат был таким же.

Это сфальсифицировано так подвиды изменить цвет, но они меняют цвет, когда они даже не касаясь, и когда они касаются неправильных UIViews меняет цвет

ответ

1

Я работал мой вопрос при использовании convertRect.

Мне показалось, что я снова прочитал документацию (поверьте, я читал ее), но раньше я пропустил ключевую информацию. Чтобы использовать convertRect: toView: использовать метод представление должно быть объектом операции преобразования, как указано в док, но я с помощью представления себя в качестве цели вместо родительского вида

interactRect = [detectInteractView convertRect:[detectInteractView frame] toView:parentView]; 

Это неверно, я знаю, что в этом сообщении не так много подробностей, но в конечном итоге вы не можете использовать тот же UIView, что и целевой, или, по крайней мере, если вы не можете заставить его работать здесь!

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