■階層: 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」のチェックを外しておきます

参考情報

UITextField | Apple Developer Documentation