今回の記事はSwiftのtextfieldで文字数制限を行う方法に関してご紹介します。初心者にも分かりやすく簡単に記載していくので是非参考にして下さい。
Swiftでtextfieldを使う
Swiftでtextfieldでを使う方法は下記記事で詳しく設定しています。今回の文字数制限に関してはtextfieldの設置とoutlet接続、文字数制限の処理の記述が必要になってきます。下記を参考にして下さい。
「【Swift】textfieldの使い方ご紹介。〜 初心者向け 〜」
textfieldで文字数制限
では文字数制限に関してみていきましょう。
文字制限に関しては2通りのやり方があります。一つは文字を記入した後リターンや改行を押した後に文字制限処理を行う方法。もう一つが文字を書き換えた後の決定(平仮名から漢字に変換終了)の際に文字制限を行う方法があります。順番に見ていきましょう。
textfieldにdelegateを設定
まずは下記のようにdelegateを設定する必要があるため記述を変更します。まず、classに下記のような記述で「UITextFieldDelegate」を追加します。
class ViewController: UIViewController,UITextFieldDelegate {
//outlet接続したtextfield
@IBOutlet weak var testtext: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
testtext.delegate = self
}
}
これでtextfieldのdelegateが追加されました。ちなみにdelagateとは何かというと簡単にいうと「処理を行う際に連結して処理が自動的に行われる仕組みのこと」です。下記に解説記事を用意しているので気になる方は参考にしてみて下さい。
今回の記事ではわかっていなくとも本質の部分は問題なく理解できます。
では先ほど追加したdelageteを使用して後続処理で文字数を制限していきます。
リターンや改行の後に文字数制限
class ViewController: UIViewController,UITextFieldDelegate {
//outlet接続したtextfield
@IBOutlet weak var testtext: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
testtext.delegate = self
}
//テキストフィールドでリターンが押されたときに通知され起動するメソッド
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
if let text = textField.text {
if textField.markedTextRange == nil && text.count > 8 {
textField.text = text.prefix(8).description
}
}
return true
}
}
文字を書き換えた後に文字制限
class ViewController: UIViewController,UITextFieldDelegate {
//outlet接続したtextfield
@IBOutlet weak var testtext: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
testtext.delegate = self
NotificationCenter.default.addObserver(
self,
selector: #selector(textFieldDidChange(notification:)),
name: UITextField.textDidChangeNotification,
object: testtext)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
// 入力チェック(文字数チェック)処理
@objc func textFieldDidChange(notification: NSNotification) {
let textField = notification.object as! UITextField
if let text = textField.text {
if textField.markedTextRange == nil && text.count > 8 {
textField.text = text.prefix(8).description
}
}
}
}
自身のアプリにあった方を使って見ましょう。では今回の記事は以上です。他にも多数のSwift関連の記事を記載しています。是非参考にしてみて下さい。
コメント