Перекрывающиеся UIControls в представлении

Я создаю пользовательский элемент управления, состоящий из двух слоев в форме пончика. Середина — это кнопка, а кольцевая часть — вращающееся колесо.

Я создал две части как два отдельных UIControls с собственными отдельными изображениями.

Моя проблема сейчас в том, что Second Control переопределяет мой First Control.

Есть ли программный способ перекрытия позиций?

Скриншот раскадровки:

введите здесь описание изображения

Пожалуйста, сосредоточьтесь на конкретном представлении под названием buttonView. Rotary knob — это пончик, а Button — это средняя кнопка.

Заранее спасибо.


person JavaCake    schedule 28.04.2012    source источник


Ответы (2)


Я предполагаю, что ваша часть пончика больше, чем ваша средняя часть, верно? Если это так, я думаю, вы должны иметь возможность использовать hitTest:WithEvent:, чтобы различать их. Однако ваша средняя секция должна быть ниже внешней секции в иерархии. hitTest вернет самое глубокое представление в иерархии, которое было затронуто.

EDIT Согласно расширенным комментариям, проблема заключалась в том, что они были перевернуты в XIB. Переключите их, и ваша средняя часть появится сверху.

person borrrden    schedule 28.04.2012
comment
Да, дырка в пончике — это второй элемент управления. Я буду копаться в hitTest:WithEvent. Еще одна вещь, которую я только что испытал, заключалась в том, что мой контроль реагирует на весь прямоугольник, что может быть проблемой, поэтому мой контроль является круговым. Но я предполагаю, что это невозможно решить? - person JavaCake; 28.04.2012
comment
@JavaCake Это возможно, но вам нужно будет выполнить расчеты самостоятельно. Затем вы можете переопределить функцию pointInside:withEvent: с вашим расчетом. - person borrrden; 28.04.2012
comment
Моя средняя секция находится на вершине в иерархии. - person JavaCake; 28.04.2012
comment
Я вижу это сейчас, но это станет болезненным процессом, учитывая, что мне придется повторить то же самое с моим средним элементом управления. Я посмотрю, есть ли другой способ управления средней кнопкой. - person JavaCake; 28.04.2012
comment
@JavaCake Не можете ли вы переместить среднюю кнопку под внешнюю? - person borrrden; 28.04.2012
comment
Я мог бы, если бы добавил прозрачность к самому пончику, что должно сделать середину видимой. Но тогда мне нужно обрабатывать касание с помощью hitTest? Кажется глупым шагом, если бы я мог сделать середину верхней частью. - person JavaCake; 28.04.2012
comment
@JavaCake О, тогда я неправильно понял. Я думал, что так было с самого начала. - person borrrden; 28.04.2012
comment
но я не понимаю, почему мой bottom control продолжает прыгать сверху? - person JavaCake; 28.04.2012
comment
@JavaCake Покажите в своем вопросе, как они добавляются (или укажите, что они загружаются из файла XIB) - person borrrden; 28.04.2012
comment
Я только что добавил скриншот. - person JavaCake; 28.04.2012
comment
@JavaCake На снимке экрана показаны ваши кнопки в обратном порядке ... (элементы, расположенные ближе всего к низу, являются самыми дальними вперед в иерархии представлений) - person borrrden; 28.04.2012

В представлении, содержащем их обоих, просто вызовите [self bringSubviewToFront:firstLayer].

person lnafziger    schedule 28.04.2012
comment
Я исправил ошибку в записи. Проблема не в представлениях, а в перекрытии элементов управления. Извиняюсь. - person JavaCake; 28.04.2012
comment
Я не понимаю проблемы. Виды одинакового размера? Почему бы просто не уменьшить внутренний элемент управления и не вывести его на шрифт? - person lnafziger; 28.04.2012