読者です 読者をやめる 読者になる 読者になる

【swift】UITextViewでリアルタイム文字数チェック

swift objective-c iPhoneアプリ開発

はじめに

やりたかったのはタイトルの通り。javascriptでやるような感覚でいけました
ひな型的に自分用にメモしておきます

実装

class SampleViewController: UIViewController, UITextFieldDelegate {

    var textField: UITextFiled = UITextField()

    var label: UILabel = UILabel() // 現在の文字数

    var now: Int = 0 // 現在の文字数
    var min: Int = 5 // 5文字以上
    var max: Int = 20 // 20文字まで

    override func viewDidLoad() {
        ・・・
        textField.delegate = self
    }

    // 登録ボタンが押された場合
    func onSender(sender: UIButton) {
        if min <= count(textField.text) && count(textField.text) <= max {
            // 送信処理
        }
    }
    
    // リアルタイム文字数カウント
    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
        var input: NSMutableString = textField.text.mutableCopy() as! NSMutableString
        str.replaceCharactersInRange(range, withString: string)
        self.now = count(String(input))

        // 現在入力中の文字数
        label.text = String(now)
        label.setNeedsDisplay()
        return true
    }
}

こんな感じでしょうか。以外とサンプル少なかった印象です

以上です