Изменение порядка подвидов UIView

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

Чтобы вывести подпредставление на передний план (внутри моего пользовательского класса UIView):

[self.superview bringSubviewToFront:self];

Легко. Я сохраняю исходную позицию z в ​​переменной экземпляра, которая называется, как вы уже догадались, zPosition. Итак, строка перед -bringSubviewToFront:— это:

zPosition = [self.superview.subviews indexOfObject:self];

Итак, весь код, который я использую для вывода своего подпредставления на передний план, это:

zPosition = [self.superview.subviews indexOfObject:self];
[self.superview bringSubviewToFront:self];

Это работает как надо. Проблема в том, что когда я пытаюсь вернуть подвид туда, где он был. Я просто делаю это:

[self.superview exchangeSubviewAtIndex:zPosition withSubviewAtIndex:
    [self.superview.subviews indexOfObject:self]];

Используя этот код, если у меня есть два подпредставления, вот что происходит:

Допустим, у меня есть вид A и вид B. Вид A находится над видом B. Я нажимаю на вид B, и он выходит на передний план. Я снова нажимаю на вид B (, он должен вернуться туда, где был ), и ничего не происходит, так что теперь он находится на виде A. Если я сейчас нажму на вид A, он появится на переднем плане, но когда я снова нажму на него (так что он должен вернуться в исходное положение z :ниже вида B ), все его одноуровневые виды исчезнут!

Кто-нибудь видит, что может быть причиной этой проблемы?

10
задан eric.mitchell 18 July 2012 в 09:52
поделиться