И снова здравствуйте!
Начинаем решать наиболее часто возникаемую задачу - как убрать клавиатуру после завершения ввода?
Решений данной задачи существует довольно много, и их легко найти. Я же опишу именно те, которые показались мне наиболее простыми и удобными.
Создайте Action соединение данного текстового поля и выберите тип события "Did End On Exit"
Добавьте в реализацию этого метода следующий код:
Это позволит вам создать соединение Action для Вашего View.
Как и в первом примере, программа сама добавит в файл .m реализацию данного метода
Теперь, после нажатия на пустое место View, клавиатура будет убираться. Если у Вас несколько текстовых полей, то в реализацию этого метода добавьте остальные текстовые поля.
Именно этот способ использовался мной при написании кредитного калькулятора. Причиной тому послужила необходимость добавления нескольких кнопок (очистка текстового поля и завершение ввода). В этом методе Вы создаете дополнительный Toolbar с несколькими кнопками над клавиатурой
//создание массива кнопок
numberToolbar.items = [NSArray arrayWithObjects:[[UIBarButtonItem alloc]initWithTitle:@"Очистить" style:UIBarButtonItemStyleBordered target:self action:@selector(clearField)], // кнопка очистки поля
[numberToolbar sizeToFit]; //метод корректного масштабирования панели
self.carWorthTextField.inputAccessoryView = numberToolbar; // применение новой панели к нужному текстовому полю
В результате реализации этого кода, над клавиатурой появится наша панель с кнопками
Теперь необходимо создать методы для обработки селекторов кнопок новой панели
В файл реализации .m добавьте следующие методы:
Начинаем решать наиболее часто возникаемую задачу - как убрать клавиатуру после завершения ввода?
Решений данной задачи существует довольно много, и их легко найти. Я же опишу именно те, которые показались мне наиболее простыми и удобными.
Способ первый. Использовать имеющуюся на клавиатуре кнопку Done (она же Return Key в Инспекторе Атрибутов текстового поля).
1. Добавление кода в файл заголовка .h
Создайте Outlet соединение нужного текстового поля:
#import <UIKit/UIKit.h>
@interface YCCCarLoanTableViewController : UITableViewController
@property (strong, nonatomic) IBOutlet UITextField *carWorthTextField;
- (IBAction)carWorthTextEndEditing:(UITextField *)sender;
2. Добавление кода в файл реализации .m
После создания соединения Action в файле реализации автоматически будет добавлен метод
- (IBAction)carWorthTextBeginEditing:(UITextField *)sender{
}
- (IBAction)carWorthTextBeginEditing:(UITextField *)sender{
[sender resignFirstResponder];
}
После запуска программы можете проверить, что клавиатура уходит при нажатии на кнопку возврата.
Способ второй. Настройка прикосновения к фону. Этот способ может пригодиться тем, кто использует клавиатуры без кнопки возврата (например, Decimal Pad). Не работает с UITableView.
1. Работа в Interface Builder
Используя Identity Inspector измените класс своего UIView на UIControl
2. Добавление кода в файл заголовка .h
Создайте Action соединение для View (как и обычно зажимаете клавишу ctrl и клавишу мыши или тач-панели и ведете соединительную линию к файлу заголовка), выберите тип события "Touch Up Inside"
- (IBAction)backgroundTap:(UIControl *)sender;
Как и в первом примере, программа сама добавит в файл .m реализацию данного метода
3. Добавление кода в файл реализации .m
Добавьте следующую строку в реализацию данного метода:
- (IBAction)backgroundTap:(UIControl *)sender
{
[self.carWorthTextField resignFirstResponder];
}
Теперь, после нажатия на пустое место View, клавиатура будет убираться. Если у Вас несколько текстовых полей, то в реализацию этого метода добавьте остальные текстовые поля.
Способ третий. Использование InputAccessoryView у текстового поля
Именно этот способ использовался мной при написании кредитного калькулятора. Причиной тому послужила необходимость добавления нескольких кнопок (очистка текстового поля и завершение ввода). В этом методе Вы создаете дополнительный Toolbar с несколькими кнопками над клавиатурой
1. Добавление кода в файл реализации .m
В любом подходящем месте вашего кода (будь-то метод ViewDidLoad или метод Action с типом "Editing Did Begin" у текстового поля) добавьте следующий код создания Toolbar:
UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.barStyle = UIBarStyleBlackTranslucent; //настройка стиля для панели
numberToolbar.tintColor = [UIColor whiteColor]; // настройка цвета кнопок
//создание массива кнопок
numberToolbar.items = [NSArray arrayWithObjects:[[UIBarButtonItem alloc]initWithTitle:@"Очистить" style:UIBarButtonItemStyleBordered target:self action:@selector(clearField)], // кнопка очистки поля
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], // пустое место для заполнения пространства панели
[[UIBarButtonItem alloc]initWithTitle:@"Готово" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],nil];//кнопка завершения ввода
[numberToolbar sizeToFit]; //метод корректного масштабирования панели
self.carWorthTextField.inputAccessoryView = numberToolbar; // применение новой панели к нужному текстовому полю
В результате реализации этого кода, над клавиатурой появится наша панель с кнопками
Теперь необходимо создать методы для обработки селекторов кнопок новой панели
В файл реализации .m добавьте следующие методы:
// завершение ввода
- (void)doneWithNumberPad
{
[self.carWorthTextField resignFirstResponder];
}
//очистка текстового поля
- (void)clearField
{
self.carWorthTextField.text = @"";
}
Теперь, при нажатии кнопок на панели, будут происходить необходимые действия с текстовым полем
На этом все! Надеюсь, что этими способами помог Вам.
Если есть вопросы, замечания или пожелания, пишите в комментариях. Пишите также что бы Вы хотели узнать из тех методов, что были мной использованы в кредитном калькуляторе (или других моих программах, когда они будут :-)).
Удачи!
Помогло, спасибо за пост
ОтветитьУдалитьРад помочь!
ОтветитьУдалитьСпасибо, четко и по порядку. И color syntax - удобно
ОтветитьУдалить