#TextFieldが選択されたらボーダー色を変えたい
TextFIeldが選択された際にドロップシャドウがかかるように設定したかったのですが、知らなくて手こずったのでメモとして残しておきます。
ポイントとしては
・デリゲートで「TextFieldがタップされたよ〜」という通知を受け取る必要がある
・TextFieldがタップされた時やエンターボタンが押された時に使えるデリゲートメソッドがこの世にはもうある(知らなかった…)
filename.rb
// UITextFieldDelegateを継承する
class HogeViewController: UIViewController, UITextFieldDelegate {
@IBOutlet private weak var nameTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// デリゲート
nameTextField.delegate = self
}
// テキストフィールドをタップした際に呼び出されるデリゲートメソッド
internal func textFieldDidBeginEditing(_ textField: UITextField) {
// ドロップシャドウをかける
textField.layer.shadowOpacity = 1.0
textField.layer.shadowRadius = 4
textField.layer.shadowColor = UIColor.blue.cgColor
textField.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
}
// テキストフィールドの編集が終わった時に呼び出されるデリゲートメソッド
internal func textFieldDidEndEditing(_ textField: UITextField) {
// フォーカスが外れたら色を消す
textField.layer.shadowColor = UIColor.clear.cgColor
}
// 画面をタッチするとキーボードが閉じる処理
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
}
結構省略したんでこれだと適用されないかも…?
とりあえずヒントになれば幸いです!