【发布时间】:2023-03-08 07:00:02
【问题描述】:
要强制 UITextfield 仅使用小写,我执行以下操作:
lazy var myTextField: UITextField = {
let textField = UITextField()
textField.addTarget(self, action: #selector(forceLettersLowercased(_ :)), for: .editingChanged)
return textField
}()
@objc func forceLettersLowercased(_ sender: UITextField) {
sender.text = sender.text?.lowercased()
}
如何使用 UITextView 实现相同的功能?
lazy var myTextView: UITextView = {
let textView = UITextView()
return textView
}()
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
let textLowerCased = text.lowercased()
textView.text = (textView.text as NSString).replacingCharacters(in: range, with: textLowerCased)
let numberOfChars = textView.text.count
return numberOfChars <= 200
}
我不断收到双字母,例如当我输入字母“W”时,我得到一个小字母和一个大写字母,然后当我按退格键时,我得到:[__NSCFString replaceCharactersInRange:withString:]: Range or index out of bounds
【问题讨论】:
-
奇怪,我想弄清楚为什么你的索引超出范围,但我实际上无法重现错误......
-
我不知道。我正在处理另一个错误。完成后我会回到这个,再次重现它,然后向你解释我采取了哪些步骤。
标签: ios swift uitextview