В моем приложении я пытаюсь вывести подвид на передний план, а затем вернуть его в исходное положение слоя позже. Код должен быть довольно простым:
Чтобы вывести подпредставление на передний план (внутри моего пользовательского класса 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 ), все его одноуровневые виды исчезнут!
Кто-нибудь видит, что может быть причиной этой проблемы?