iOS. Приемы программирования - стр. 55
Чтобы определить наше текстовое поле, начнем работу с файла реализации контроллера вида:
>#import "ViewController.h"
>@interface ViewController ()
>@property (nonatomic, strong) UITextField *myTextField;
>@end
>@implementation ViewController
>…
А потом создадим это текстовое поле:
>– (void)viewDidLoad{
>[super viewDidLoad];
>CGRect textFieldFrame = CGRectMake(0.0f,
>0.0f,
>200.0f,
>31.0f);
>self.myTextField = [[UITextField alloc]
>initWithFrame: textFieldFrame];
>self.myTextField.borderStyle = UITextBorderStyleRoundedRect;
>self.myTextField.contentVerticalAlignment =
>UIControlContentVerticalAlignmentCenter;
>self.myTextField.textAlignment = NSTextAlignmentCenter;
>self.myTextField.text = @"Sir Richard Branson";
>self.myTextField.center = self.view.center;
>[self.view addSubview: self.myTextField];
>}
Прежде чем подробно рассматривать код, взглянем на результат его выполнения (рис. 1.50).
При создании этого текстового поля мы использовали различные свойства класса UITextField:
• borderStyle – свойство имеет тип UITextBorderStyle и указывает, как должны отображаться границы текстового поля;
• contentVerticalAlignment – это значение типа UIControlContentVerticalAlignment, сообщающее текстовому полю, как текст должен отображаться по вертикали в границах этого поля. Если не выровнять текст по центру по вертикали, он по умолчанию отобразится в левом верхнем углу поля;
• textAlignment – это свойство имеет тип UITextAlignment и указывает выравнивание текста в текстовом поле по горизонтали. В данном примере текст выровнен в текстовом поле по центру и по горизонтали;
• text – это свойство доступно как для считывания, так и для записи. То есть можно не только получать из него информацию, но и записывать туда новые данные. Функция считывания возвращает текст, который в данный момент находится в текстовом поле, а функция записи задает для текстового поля то значение, которое вы в ней указываете.
Рис. 1.50. Простое текстовое поле, текст в котором выровнен по центру
Текстовое поле посылает сообщения-делегаты своему объекту-делегату. Такие сообщения отправляются, например, когда пользователь начинает изменять (редактировать) информацию в текстовом поле (как-либо изменяет его содержимое) и когда он прекращает взаимодействовать с полем (покидает его). Чтобы получать уведомления об этих событиях, задайте ваш объект в качестве значения свойства delegate текстового поля. Делегат текстового поля должен соответствовать протоколу UITextFieldDelegate, так что позаботимся об этом:
>@interface ViewController ()
>@property (nonatomic, strong) UITextField *myTextField;
>@end
>@implementation ViewController
Нажав и удерживая клавишу Command, щелкните на протоколе UITextFieldDelegate в Xcode. Вы увидите методы, которыми позволяет управлять этот протокол. Рассмотрим эти методы, а также укажем, когда они вызываются.
• textFieldShouldBeginEditing: – возвращает логическое значение, сообщающее текстовому полю (текстовое поле является параметром этого метода), может ли пользователь редактировать содержащуюся в нем информацию (то есть разрешено это или нет). Возвратите здесь значение NO, если не хотите, чтобы пользователь изменял текст в этом поле. Метод запускается, как только пользователь касается этого поля, намереваясь его редактировать (при условии, что в поле допускается редактирование).