Исходное значение
Задайте исходное значение contentSize для scrollView в viewDidLoad. Не забудьте: мы сообщаем прокручиваемому представлению, что размеры контента совпадают с размерами представления, в котором оно находится.
Включите в DrinkDetailViewController атрибут с именем scrollView для хранения ссылки на UlScrollView. Объявите поле и свойство IBOutlet, включите директиву @synthesize в файл и освободите ссылку в dealloc.
Свяжите новое свойство с UlScrollView в Interface Builder.
Почему прокрутка все еще не работает? Подумайте, что сейчас отображается на экране: прокручиваемое представление, основное представление и клавиатура.
Выберите текстовое поле, на экране появляется клавиатура. Но ничего не прокручивается!
Клавиатура изменяет видимую область.
Проблема заключается в том, что клавиатура изменила размер видимой области, но прокручиваемое представление понятия не имеет о произошедшем. Оно по-прежнему думает, что для отображения контента в его распоряжении остается весь экран, и с его точки зрения свободного места достаточно. Мы должны сообщить прокручиваемому представлению, что с появлением клавиатуры видимая область уменьшилась.
iOS только сообщает о появлении клавиатуры.
iOS знает лишь то, что клавиатура находится на экране, а не то, как ваше приложение должно поступать при ее появлении. Это зависит уже от вас!
А как было бы замечательно, если бы iOS могла просто сообщить приложению о появлении клавиатуры. Но это, конечно, только мечты.
iOS оповещает приложение о клавиатуре.
Взаимодействие с клавиатурой и прокручиваемым представлением приводит нас к возможности iOS, которую мы еще не рассматривали: механизму оповещений. Наряду с событиями компонентов, передаваемыми в приложениях, существуют события системного уровня, называемые оповещениями; они передаются iOS. Чтобы ваше приложение имело информацию о том, что происходит с клавиатурой, необходимо организовать обработку этих системных событий.
Василий активизирует поле названия коктейля, и поле становится первым ответчиком. Теперь система iOS должна отобразить клавиатуру.
iOS отправляет оповещение стандартному объекту NSNotificationCenter с именем UIKeyboardDidShowNotification.
NSNotificationCenter обращается с вызовом по зарегистрированному селектору и передает информацию об объекте, инициировавшем событие, и дополнительную информацию для конкретного события.
NSNotificationCenter проверяет, зарегистрировались ли какие либо объекты на оповещение о данном событии. При регистрации объекты указывают селектор (метод), который должен вызываться при наступлении события.
- Дата: 20-12-2014, 23:33