Нам нужно использовать UITextView
(т.е. многострочный текстовый ввод), чтобы позволить пользователю вводить информацию. UITextView
плохо работает с автоматическим изменением размера, поэтому мы устанавливаем ограничения, используя границы вида UIAlertController
. В зависимости от настроек специальных возможностей возникают проблемы с макетом.
Например, это макет, красивый и аккуратный, при больших настройках текста:
Но, используя те же ограничения, вот как это выглядит при использовании настроек текста по умолчанию:
Не хорошо! Мы не хотим лезть в кроличью нору настройки кода для каждой модели и настроек размера текста. Есть ли законный способ получить представления для сообщения и действий, чтобы мы могли вместо этого настроить эти функции?
"Legal", потому что официальная документация для UIAlertController
указывает ( выделение мое):
Важно
Класс UIAlertController
предназначен для использования как есть и не поддерживает создание подклассов. Иерархия представления для этого класса является приватной и не должна изменяться.
И подтвердили, что действия (кнопки Cancel
и Submit
), кажется, не видны, когда мы выполняем итерацию по [[alertController view] subviews]
, поэтому мы должны быть осторожны.
Кроме того, safeAreaInsets
- это {0, 0, 0, 0}
для всех моделей iPhone, так что здесь это не поможет.
Я полагаю, что большая часть проблемы связана со сложением кнопок, поэтому, если есть способ определить эту конфигурацию, это решит большую часть проблемы с макетом.
Это старое приложение, поэтому мы кодируем в Objective-C, но решения Swift тоже подойдут.