|
Авг
11
|
Приходилось ли вам задумываться над тем, как вводить данные пользователю, если текстовое поле расположено в нижней части представления? Появляющаяся при щелчке на текстовом поле клавиатура будет его скрывать. Решение очевидно — анимировать текстовое поле, сместив его вверх.
Объявите экземпляр “UITexField” и в редакторе Interface Builder установите его соответствие реальному текстовому полю (см. рис. ниже).

Теперь пропишите функцию действия, установив ее соответствие событию “textfieldEditing Did Begin“, как показано ниже. На иллюстрации — прототип функции.
1 | -(IBAction)startEdit; |

Данная функция вызывается каждый раз, когда пользователь щелчком по текстовому полю запускает редактирование. Теперь необходим основной код, смещающий вверх текстовое поле. Вот как он будет выглядеть:
1 2 3 4 5 6 7 8 9 10 11 | -(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“, как на рис. ниже.

В функцию действия добавьте приведенный ниже код:
1 2 3 4 5 6 7 8 9 10 11 12 | -(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“. Надеюсь, теперь проблем с текстовым полем не возникнет.


Август 14th, 2009 at 19:53
You do not have the rights to this blog post. I am the webmaster of http://www.iphoneapptuts.com — please remove this blog post.
Август 15th, 2009 at 05:41
Hello! I translate you article and post in my blog with backlink to you site. Any problem? Write on lookapp@gmail.com
Январь 22nd, 2010 at 19:26
As long as you post back links that’s fine.