У меня есть текстовое поле, в котором я хочу, чтобы пользователи могли выбрать эмодзи в качестве значка. В настоящее время я могу ограничить текстовое поле только одним символом, но я также хочу, чтобы пользователи могли легко менять значок, не нажимая клавишу «Возврат». Любые решения заменить существующий текст новым текстом, сохраняя ограничение в 1 символ.
extension ItemDetailViewController : UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if categoryTextField.isEditing {
let categoryText = categoryTextField.text ?? ""
guard let stringRange = Range(range, in: categoryText) else { return false }
let updatedText = categoryText.replacingCharacters(in: stringRange, with: string)
return updatedText.count <= 1
} else {
let oldText = self.textField.text!
let stringRange = Range(range, in: oldText)!
let newText = oldText.replacingCharacters(in: stringRange, with: string)
doneBarButton.isEnabled = !newText.isEmpty
return true
}
}
}