HOME > UITextfieldで文字を編集する
UILabelと同じように文字を表示するクラスですが、このクラスは文字の編集が可能です。
NSObject
↑
UIResponder
↑
UIView
↑
UIControl
↑
UITextField
参考:004 UITextFieldで文字を入力
参考:UIKit Framework Reference UITextField Class Reference
まず簡単な処理
let myTextField: UITextField = UITextField(frame: CGRectMake(0,0,500,30))
myTextField.text = "Hello Swiftサラリーマン!!"
self.view.addSubview(myTextField)
これだけだとUIlabelと同じに見えますね。
let myTextField: UITextField = UITextField(frame: CGRect(x:0,y:0,width:500,height:30))
myTextField.text = "Hello Swiftサラリーマン!!"
myTextField.borderStyle = UITextBorderStyle.roundedRect
self.view.addSubview(myTextField)
枠をつけてみました。
let myTextField: UITextField = UITextField(frame: CGRect(x:0,y:0,width:500,height:30))
myTextField.text = "Hello Swiftサラリーマン!!"
myTextField.delegate = self;
myTextField.borderStyle = UITextBorderStyle.roundedRect
self.view.addSubview(myTextField)
親Viewにdelegateをセット。UITextFieldDelegateを追加しないとランタイムエラーになるので注意。この状態なら親のUIViewControllerからTextFieldの各イベントを取得できます。
let myTextField: UITextField = UITextField(frame: CGRect(x:0,y:0,width:500,height:30))
myTextField.text = "Hello Swiftサラリーマン!!"
myTextField.delegate = self;
myTextField.borderStyle = UITextBorderStyle.roundedRect
self.view.addSubview(myTextField)
//編集直後
func textFieldDidBeginEditing(_ textField: UITextField){
print("textFieldDidBeginEditing:" + textField.text!)
}
//編集完了後(完了直前)
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
print("textFieldShouldEndEditing:" + textField.text!)
return true
}
//編集完了後(完了直後)
private func textFieldDidEndEditing(textField: UITextField) -> Bool {
print("textFieldDidEndEditing:" + textField.text!)
return true
}
//改行時
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
クリアボタンが押された時に実行されるtextFieldShouldClearもありますがFPPopoverが原因でイベントが取得できませんので注意。
textfieldのプロパティのtagに番号をセットしておけば振り分けが可能です。
enum TextFieldType {
case Textfield001
case Textfield002
case Textfield003
}
let myTextField: UITextField = UITextField(frame: CGRectMake(0,0,500,30))
myTextField.text = "Hello Swiftサラリーマン!!"
myTextField.delegate = self;
myTextField.tag = TextFieldType.Textfield001.hashValue;
myTextField.borderStyle = UITextBorderStyle.RoundedRect
self.view.addSubview(myTextField)
//なにかしらのイベント。改行時
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
switch textField.tag{
case TextFieldType.Textfield001.hashValue:
//処理1
break;
case TextFieldType.Textfield002.hashValue:
//処理2
break;
case TextFieldType.Textfield003.hashValue:
//処理3
break;
default:
// 上記以外
break;
}
return true
}
入力前のテキストフィールドに薄いグレーの文字を表示する方法です。
let myTextField: UITextField = UITextField(frame: CGRectMake(0,0,500,30))
myTextField.placeholder = "ここに入力してくださいね"
myTextField.borderStyle = UITextBorderStyle.RoundedRect
self.view.addSubview(myTextField)
文字列が正しいEmailかどうかの判断をさせる場合に利用します。
println(isValidEmail("swift-salarymail@@@@eeee"));//false
println(isValidEmail("swift-salaryman@gmail.com"));//true
println(isValidEmail("swift-salarymail.com"));//false
println(isValidEmail("swift-salarymail.gmail.com"));//false
println(isValidEmail("111244242@hotmail.com"));//true
func isValidEmail(emailstr:String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailTest.evaluateWithObject(emailstr)
}
参考:How to validate an e-mail address in swift?
テキスト複数表示のTextViewの記事はこちらからどうぞ!
2021-05-14 14:21:41 | WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。
AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、
昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は... |
2021-05-06 14:04:37 | LINEのアニメーションスタンプ制作の落とし穴、、、失敗談
ゴールデンウィークにLINEスタンプを作成してみました。
作り切って申請も通したんですが、意図したアニメーションと違う、、、、
LINEクリエーターの画面だと、アニメーションのプレビュー... |
2021-05-01 18:05:35 | 久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。
忘れないようにメモ
エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。
ターゲット→ex... |
Tweet | |||
|