Разработка iPhone/iPod touch приложений: Как добавить Return-Key в UITextField для PhonePad/NumberPad

Как выяснилось опытным путем, кнопка return для данных типов клавиатур в UITextField отсутствует ;(
Все попытки установить хоть какой-то return-key, успехом не увенчались.
Вопрос:Так как же все-таки ее добавить?
Ответ: Добавлять прийдется вручную, например в navigationItem. Кстати о них можете почитать пока что здесь
Для этого вам, скорее всего, понадобятся базовые знания Interface Buildera. Хотя, если вы читаете этот пост, они, скорее всего у вас есть ;)
[sourcecode language='objc'] // RootViewController.h #import// Контроллер будет обрабатывать события UITextField, // поэтому должен реализовывать протокол UITextFieldDelegate @interface RootViewController : UIViewController { // наше текстовое поле UITextField * nameField; } // и свойство для текстового поля @property(nonatomic, retain) IBOutlet UITextField * nameField; @end //RootViewController.m #import "RootViewController.h" @implementation RootViewController @synthesize nameField; - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } // Метод из протокола UITextFieldDelegate который // вызывается при появлении "клавиатуры" - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ // создаем кнопку DONE справа // и вешаем обработчик onTextFieldDone: на нажатие self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(onTextFieldDone:)] autorelease]; return YES; } // При нажатии на кнопку, убираем клавиатуру -(void) onTextFieldDone:(id) sender { [nameField resignFirstResponder]; } // Метод из протокола UITextFieldDelegate который // вызывается при окончании редактирования текстового поля - (void)textFieldDidEndEditing:(UITextField *)textField { // удаляем кнопку self.navigationItem.rightBarButtonItem = NULL; } - (void)dealloc { [super dealloc]; } @end [/sourcecode]
Вот такой вид имеет приложение до и после установки кнопки DONE вместо return-key.








Пока нет комментариев.