Размер шрифта
-
+

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, если не хотите, чтобы пользователь изменял текст в этом поле. Метод запускается, как только пользователь касается этого поля, намереваясь его редактировать (при условии, что в поле допускается редактирование).

Страница 55