■階層: NSObject > UIResponder > UIView > UIControl > UITextField
文字を入力するためのコントロールです。UILabelと同様に文字のフォントや色、背景色などを変更することが可能です。iOSでは表示するキーボードを適切に管理する役割もになっています。UITextFieldDelegateによって編集動作を制御することもできます。
主なプロパティ
UITextFieldの主要なプロパティをリストアップします。
プロパティ名 | 型 | 説明 |
---|---|---|
text | String? | テキストフィールドに表示されるテキスト |
placeholder | String? | テキストフィールドが空の場合に表示される文字列 |
font | UIFont? | テキストフィールドのテキストのフォント |
textColor | UIColor? | テキストの色 |
textAlignment | NSTextAlignment | テキストの配置 |
borderStyle | UITextBorderStyle | テキストフィールドの枠 |
keyboardType | UIKeyboardType | 表示するキーボードの種類 |
returnKeyType | UIReturnKeyType | キーボードのリターンキー |
デリゲート
UITextFieldDelegate
編集の開始や終了時に呼び出されます。
メソッド | 説明 |
---|---|
textFieldShouldBeginEditing: | 編集を開始すべきかどうかを決定します |
textFieldDidBeginEditing: | 編集開始直後に呼び出されます |
textFieldShouldEndEditing: | 編集を終了すべきかどうかを決定します |
textFieldDidEndEditing: | 編集終了後に呼び出されます |
サンプル
UITextFieldをプログラムで生成して各種プロパティを設定するプログラムです。
myTextFieldはInterface Builderで生成したもので、ViewControllerをdelegateとして設定してあります。UITextFieldDelegateの各メソッドが呼び出されることが確認できます。
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var myTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let textField = UITextField(frame: CGRectMake(20, 20, 200, 40))
textField.placeholder = "プレースホルダです" //プレースホルダの設定
textField.text = "初期値です" //テキストの設定
textField.backgroundColor = UIColor.lightGrayColor() //背景色の設定
textField.font = UIFont.systemFontOfSize(14) //フォントサイズの指定
textField.font = UIFont.systemFontOfSize(UIFont.systemFontSize()) //システムフォントサイズと同じサイズ
textField.font = UIFont.italicSystemFontOfSize(UIFont.labelFontSize()) //イタリックに変更
textField.font = UIFont.boldSystemFontOfSize(UIFont.labelFontSize()) //ボールドに変更
textField.font = UIFont(name:"ArialHebew", size:UIFont.labelFontSize()) //フォント名を指定
textField.textColor = UIColor.redColor() //赤色に設定
textField.textAlignment = NSTextAlignment.Left //左揃え
textField.textAlignment = NSTextAlignment.Center //中央揃え
textField.textAlignment = NSTextAlignment.Right //右揃え
//https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextField_Class/#//apple_ref/c/tdef/UITextBorderStyle
textField.borderStyle = UITextBorderStyle.None //枠なし
textField.borderStyle = UITextBorderStyle.Line //線の枠線
textField.borderStyle = UITextBorderStyle.Bezel //立体的な枠線
textField.borderStyle = UITextBorderStyle.RoundedRect //角丸
//キーボードの種類の指定
//https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/#//apple_ref/c/tdef/UIKeyboardType
textField.keyboardType = UIKeyboardType.Default //デフォルト
textField.keyboardType = UIKeyboardType.ASCIICapable // ASCII
textField.keyboardType = UIKeyboardType.NumbersAndPunctuation //数字と記号
textField.keyboardType = UIKeyboardType.URL //URL用
textField.keyboardType = UIKeyboardType.NumberPad //テンキー
textField.keyboardType = UIKeyboardType.PhonePad //電話用
textField.keyboardType = UIKeyboardType.NamePhonePad //名前または電話番号
textField.keyboardType = UIKeyboardType.EmailAddress //メールアドレス
textField.keyboardType = UIKeyboardType.DecimalPad //数字
textField.keyboardType = UIKeyboardType.Twitter //Twitter用
textField.keyboardType = UIKeyboardType.WebSearch //Web検索用
textField.keyboardType = UIKeyboardType.Alphabet //ASCIIと同じ
//Returnキーの指定
//https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/#//apple_ref/c/tdef/UIReturnKeyType
textField.returnKeyType = UIReturnKeyType.Default //デフォルト
textField.returnKeyType = UIReturnKeyType.Go //Go
textField.returnKeyType = UIReturnKeyType.Google//Google
textField.returnKeyType = UIReturnKeyType.Join //Join
textField.returnKeyType = UIReturnKeyType.Next //Next
textField.returnKeyType = UIReturnKeyType.Route //Route
textField.returnKeyType = UIReturnKeyType.Search //Search
textField.returnKeyType = UIReturnKeyType.Send //Send
textField.returnKeyType = UIReturnKeyType.Yahoo //Yahoo
textField.returnKeyType = UIReturnKeyType.Done //Done
textField.returnKeyType = UIReturnKeyType.EmergencyCall //EmergencyCall
textField.returnKeyType = UIReturnKeyType.Continue //Continue
//クリアボタンの表示
//https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextField_Class/#//apple_ref/c/tdef/UITextFieldViewMode
textField.clearButtonMode = UITextFieldViewMode.Never //表示しない
textField.clearButtonMode = UITextFieldViewMode.WhileEditing //編集中のみ表示
textField.clearButtonMode = UITextFieldViewMode.UnlessEditing //編集中以外に表示
textField.clearButtonMode = UITextFieldViewMode.Always //常に表示
self.view.addSubview(textField)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
//編集を開始すべきかどうかを決定する
print("textFieldShouldBeginEditing")
return true
}
func textFieldDidBeginEditing(textField: UITextField) {
//編集開始直後に呼ばれる
print("textFieldDidBeginEditing")
}
func textFieldShouldEndEditing(textField: UITextField) -> Bool {
//編集を終了すべきかどうかを決定する
print("textFieldShouldEndEditing")
return true
}
func textFieldDidEndEditing(textField: UITextField) {
//編集終了後に呼ばれる
print("textFieldDidEndEditing")
}
}
UITextFieldDelegateの反応を調べる場合、シミュレーターの設定でハードウェアキーボード(Macのキーボード)を使わないように設定しておきます。「Hardware > Keyboard」と進み「Connect Hardware Keyboard」のチェックを外しておきます