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

Как выяснилось опытным путем, кнопка return для данных типов клавиатур в UITextField отсутствует ;(
Все попытки установить хоть какой-то return-key, успехом не увенчались.
Вопрос:Так как же все-таки ее добавить?
Ответ: Добавлять прийдется вручную, например в navigationItem. Кстати о них можете почитать пока что здесь
Для этого вам, скорее всего, понадобятся базовые знания Interface Buildera. Хотя, если вы читаете этот пост, они, скорее всего у вас есть ;)
// RootViewController.h
#import <UIKit/UIKit.h>
// Контроллер будет обрабатывать события UITextField,
// поэтому должен реализовывать протокол UITextFieldDelegate
@interface RootViewController : UIViewController <UITextFieldDelegate>{
// наше текстовое поле
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
Вот такой вид имеет приложение до и после установки кнопки DONE вместо return-key.








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