Уроки iPhone SDK: Анимация представления в iPhone SDK
Приходилось ли вам задумываться над тем, как вводить данные пользователю, если текстовое поле расположено в нижней части представления? Появляющаяся при щелчке на текстовом поле клавиатура будет его скрывать. Решение очевидно — анимировать текстовое поле, сместив его вверх.
Объявите экземпляр “UITexField” и в редакторе Interface Builder установите его соответствие реальному текстовому полю (см. рис. ниже).
Теперь пропишите функцию действия, установив ее соответствие событию “textfieldEditing Did Begin“, как показано ниже. На иллюстрации — прототип функции. Если это не ваши первые шаги в разработке приложения для iOS
(https://freelancehunt.com/freelancers/mobilnyie-prilozheniya/ios-iphone-ipad), то здесь у вас точно не возникнет никаких затруднений.
-(IBAction)startEdit;Данная функция вызывается каждый раз, когда пользователь щелчком по текстовому полю запускает редактирование. Теперь необходим основной код, смещающий вверх текстовое поле. Вот как он будет выглядеть:
-(IBAction)startEdit {
[UIViewbeginAnimations: @"moveField"context: nil];
[UIViewsetAnimationDelegate: self];
[UIViewsetAnimationDuration: 0.5];
[UIViewsetAnimationCurve: UIViewAnimationCurveEaseInOut];
txtField.frame = CGRectMake(txtField.frame.origin.x,
txtField.frame.origin.y - 200,
txtField.frame.size.width,
txtField.frame.size.height);
[UIViewcommitAnimations];
}Величину 200 можно откорректировать по своему усмотрению (определяет величину смещения текстового поля).
По окончании редактирования текстовое поле нужно будет вернуть на место. В этом нам поможет другая функция, привязанная к действию с текстовым полем “Did End on Exit“, как на рис. ниже.
В функцию действия добавьте приведенный ниже код:
-(IBAction)endEdit {
[txtFieldresignFirstResponder];
[UIViewbeginAnimations: @"moveField"context: nil];
[UIViewsetAnimationDelegate: self];
[UIViewsetAnimationDuration: 0.5];
[UIViewsetAnimationCurve: UIViewAnimationCurveEaseInOut];
txtField.frame = CGRectMake(txtField.frame.origin.x,
txtField.frame.origin.y + 200,
txtField.frame.size.width,
txtField.frame.size.height);
[UIViewcommitAnimations];
}Функция “resignFirstResponder” будет отвечать за исчезновение клавиатуры.
Точно по такому же принципу можно перемещать и анимировать любое представление, наследуемое от “UIView“. Надеюсь, теперь проблем с текстовым полем не возникнет.