UITextField - テキスト入力欄表示

f:id:oynop:20150226041628p:plain:h100 f:id:oynop:20150226041630p:plain:h100

説明

UITextFieldはUIControlのサブクラス

ソースコード

UITextFieldSample.swift

import UIKit
class UITextFieldSample: UIView, UITextFieldDelegate {
    override init(frame: CGRect) {
        super.init(frame: frame)
        let tf = UITextField(frame: CGRectMake(0, 0, 200, 40))
        self.addSubview(tf)
        tf.center = self.center
        
        // デリゲートを指定 (selfはUITextFIeldDelegateを継承している必要がある)
        tf.delegate = self
        
        // 最初から入力してあるテキスト
        tf.text = "text"
        
        // 何も入力していない時に表示されるテキスト
        tf.placeholder = "placeholder"

        // 境界のスタイル (None, Line, Bezel, RoundedRect)
        tf.borderStyle = UITextBorderStyle.RoundedRect

        // 消去ボタン表示の設定 (Never, WhileEditing, UnlessEditing, Always)
        tf.clearButtonMode = UITextFieldViewMode.WhileEditing
        
        // テキストフィールド以外をタップしたらキーボードを閉じる
        keyboardCloseEnable(tf)
    }
    func textFieldDidBeginEditing(textField: UITextField) {
        // 編集を開始した時の処理
        println("text field edit begin")
    }
    func textFieldShouldEndEditing(textField: UITextField) -> Bool {
        // 編集を終了した時の処理
        println("text field edit end")
        return true
    }
    func textFieldShouldClear(textField: UITextField) -> Bool {
        // 消去ボタンを押した時の処理
        println("text field clear")
        return true
    }
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        // returnボタンを押した時の処理
        textField.resignFirstResponder()
        println("text field return")
        return true
    }
    var sendText: UIView?
    func keyboardCloseEnable(view: UIView) {
        let tap = UITapGestureRecognizer(target: self, action: "closeKeyboard:")
        tap.numberOfTapsRequired = 1
        self.addGestureRecognizer(tap)
        sendText = view
    }    
    func closeKeyboard (recognizer:UIPanGestureRecognizer){
        sendText?.resignFirstResponder()
    }

    
    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

ViewController.swift

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {       
        super.viewDidLoad()
        self.view.backgroundColor = colorPattern.back()
        self.view.addSubview(UITextFieldSample(frame: self.view.frame))
    }
   
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}