RemoveFromSuperView () с анимацией - AnimationWillEnd не срабатывает - PullRequest
2 голосов
/ 17 января 2011

У меня есть UIView, и я пытаюсь удалить его из суперпредставления, используя анимацию (переход в альфа 0.0) Работает нормально, но представление никогда не удаляется из суперпредставления, хотя я добавил делегата в AnimationWillEnd. Вот код Вывод на консоль не записывается, и представление не удаляется. Что не так?

    UIButton oBtn = UIButton.FromType(UIButtonType.RoundedRect);
    oBtn.Frame = new RectangleF(0, 0, 100, 20);
    oBtn.SetTitle("Hide", UIControlState.Normal);
    oBtn.Center = new PointF(80, 120);
    oBtn.TouchUpInside += delegate(object sender, EventArgs e) {
        UIView.BeginAnimations(null);

            UIView.AnimationWillEnd += delegate {
           Console.WriteLine("Removed.");
           oView.RemoveFromSuperview();
            };

    UIView.SetAnimationDuration(2);
    UIView.SetAnimationBeginsFromCurrentState(true);
    oView.Alpha = 0.0f;
    UIView.CommitAnimations();
   };
   oView.AddSubview(oBtn);

Ответы [ 2 ]

5 голосов
/ 17 января 2011

Я много чего пробовал с вашим кодом, но кажется, что обработчик UIView.AnimationWillEnd никогда не вызывается.Однако существует способ выполнить требуемую задачу:

oBtn.TouchUpInside += delegate(object sender, EventArgs e) {

        UIView.Animate(2, 
            delegate {
                oView.Alpha = 0.0f;
            },
            delegate {
                Console.WriteLine("Removed.");
                oView.RemoveFromSuperview();
            });
   };

Второй анонимный метод вызывается после завершения анимации.Вы можете проверить другие перегрузки Animate для дополнительных параметров.

0 голосов
/ 17 января 2011

Кнопка должна быть определена вне области действия метода, иначе она будет собрана раньше, чем ожидалось. Попробуйте определить кнопку на уровне класса, а затем установите для нее значение null в вашем делегате AnimationWillEnd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...