Я использую пользовательский контроллер представления, чтобы сделать что-то похожее на UIAlertView
. Я хочу, чтобы он двигался вверх, когда показывает клавиатура. В обработчике UIKeyboardWillShowNotification
я захватываю новый фрейм клавиатуры, сохраняя его в свойстве, а затем вызываю:
self.presentedView.frame = [wself frameOfPresentedViewInContainerView];
В моей реализации -frameOfPresentedViewInContainerView
я учитываю текущую высоту клавиатуры.
Это работает отлично, но он чувствует себя немного грязным, чтобы напрямую изменить рамку self.presentedView
. Я попробовал запуск макета в представлении контейнера с различными перестановками setNeedsLayout
и layoutIfNeeded
, но ничто не приводит к тому, что представленное представление перемещается, а не просто устанавливает его рамку напрямую.
Есть ли лучший способ сделать это, чем просто изменить сам кадр?