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

no-return2

 

Как выяснилось опытным путем, кнопка 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.

iphone-phonepadkeyboardiphone-phonepadkeyboard-after

 

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

Оставить комментарий