我想知道如何显示UITextField
中剩余的字符。
现在我通过以下方式限制角色:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == TextFieldOne {
guard let text = textField.text else { return true }
let newLength = text.characters.count + string.characters.count - range.length
return newLength <= 55
}
return true
}
我想要做的是在您输入时让UILabel
从55
倒计时。
我在考虑在textFieldDidChange
内添加某种逻辑来购买我无法访问该功能的范围。
答案 0 :(得分:4)
您需要UITextFieldDelegate
。
将viewDidLoad
中的委托设置为textField
插座。
然后使用shouldChangeCharactersInRange
函数。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
// here you set the start value 55 of your label
label.text = String(55)
}
}
extension ViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = textField.text else { return true }
let length = text.characters.count + string.characters.count - range.length
// create an Integer of 55 - the length of your TextField.text to count down
let count = 55 - length
// set the .text property of your UILabel to the live created String
label.text = String(count)
// if you want to limit to 55 charakters
// you need to return true and <= 55
return length <= 55 // To just allow up to 55 characters
}
}