Нахавандипур Вандад
Шрифт:
Запустим приложение в эмуляторе iOS и посмотрим, как оно выглядит (рис. 1.55).
Рис. 1.55. Текстовый вид, занимающий все экранное пространство
Если коснуться текстового поля пальцем, то можно увидеть, как снизу всплывает виртуальная клавиатура. Она довольно крупная и закрывает текстовый вид почти наполовину. То есть если пользователь начнет вводить текст и дойдет примерно до середины окна по вертикали, весь остальной текст, который будет вводиться, окажется заслоненным клавиатурой (рис. 1.56).
Чтобы избежать такой ситуации, необходимо слушать определенные уведомления:
• UIKeyboardWillShowNotification — система выдает такое уведомление всякий раз, когда клавиатура выводится на экран для работы с каким-либо компонентом: текстовым полем, текстовым видом и т. д.;
• UIKeyboardDidShowNotification — система выдает такое уведомление, когда клавиатура отобразится целиком;
• UIKeyboardWillHideNotification — система выдает такое уведомление перед тем, как клавиатура скроется из вида;
Рис. 1.56. Клавиатура, наполовину занимающая текстовый вид
• UIKeyboardDidHideNotification — система выдает такое уведомление после того, как клавиатура полностью скроется из вида.
Уведомления клавиатуры содержат словарь, доступный с помощью свойства userInfo. Он указывает границы клавиатуры на экране и относится к типу NSDictionary. В словаре среди прочего имеется ключ UIKeyboardFrameEndUserInfoKey, содержащий объект типа NSValue. В свою очередь, этот объект содержит прямоугольник, ограничивающий размеры клавиатуры, когда она полностью отображена на экране. Эта прямоугольная область обозначается как CGRect.
Наша стратегия такова: нужно узнать, когда клавиатура полностью отобразится, а потом каким-то способом пересчитать размеры нашего текстового вида. Для этого воспользуемся свойством contentInset класса UITextView, чтобы задать границы контента, содержащегося в текстовом поле, — верхнюю, нижнюю, правую и левую: