>self.label.backgroundColor = [UIColor clearColor];
>self.label.text = @"iOS SDK";
>self.label.font = [UIFont boldSystemFontOfSize:70.0f];
>self.label.textColor = [UIColor blackColor];
>self.label.shadowColor = [UIColor lightGrayColor];
>self.label.shadowOffset = CGSizeMake(2.0f, 2.0f);
>[self.label sizeToFit];
>self.label.center = self.view.center;
>[self.view addSubview: self.label];
>}
>@end
См. также
Разделы 1.17, 1.26.
1.19. Прием пользовательского текстового ввода с помощью UITextField
Постановка задачи
Необходимо принимать через пользовательский интерфейс программы текст, вводимый пользователем.
Решение
Воспользуйтесь классом UITextField.
Обсуждение
Текстовое поле очень похоже на подпись тем, что в нем также можно отображать текстовую информацию. Но текстовое поле, в отличие от подписи, может принимать текстовый ввод и во время исполнения. На рис. 1.49 показаны два текстовых поля в разделе Twitter приложения Settings (Настройки) в iPhone.
Рис. 1.49. Текстовые поля, в которые можно вводить текст
В текстовом поле можно вводить и отображать только одну строку текста. Именно поэтому стандартная высота текстового поля, задаваемая по умолчанию, – всего 31 пункт. Эту высоту нельзя изменить в конструкторе интерфейса, но если вы создаете текстовое поле прямо в коде, то сделать это можно. Тем не менее при изменении высоты не изменяется количество строк, которые можно записать в текстовом поле, – строка всегда всего одна.
Чтобы определить наше текстовое поле, начнем работу с файла реализации контроллера вида:
>#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, так что позаботимся об этом: