Posted at

swift4でrxswiftを使用してUITextFieldにmaxlengthを設定する

この記事を参考に、UITextFieldのmaxlengthを設定していたのですが、maxlengthって割と色々なところで設定するんですよね……

なので、もうちょっと色々なUITextFieldから使えるようにしてみました。


実装!


maxlength.swift

func setMaxLength(textField: UITextField, limit: Int) -> (String?) -> Void {

return { txt in
guard let txt = txt else {
return
}

if txt.count >= limit {
let start = txt.startIndex
let end = txt.index(start, offsetBy: limit)
textField.text = txt.substring(with: start..<end)
}
}
}

hogeTextField.rx.text.subscribe(
onNext: setMaxLength(textField: hogeTextField, limit: 10)
)

fugaTextField.rx.text.subscribe(
onNext: setMaxLength(textField: fugaTextField, limit: 10)
)


textFieldを引数で渡さないようにしたい・・・が、ぐぬぬ:joy: