Я пытаюсь создать пользовательское текстовое поле в Swift. Вот мой кодИспользование пользовательского UITextField в функциях UITextFieldDelegate
public class AmountTextField : UITextField{
let currencyFormattor = NSNumberFormatter()
let amountTextFieldDelegate = AmountTextFieldDelegate()
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initTextField()
}
func initTextField(){
self.delegate = amountTextFieldDelegate
currencyFormattor.numberStyle = .CurrencyStyle
currencyFormattor.minimumFractionDigits = 2
currencyFormattor.maximumFractionDigits = 2
}
func setAmount (amount : Double){
let textFieldStringValue = currencyFormattor.stringFromNumber(amount)
self.text = textFieldStringValue
}
}
И мой AmountTextFieldDelegate выглядит эта
class AmountTextFieldDelegate : NSObject, UITextFieldDelegate{
func textField(textField: AmountTextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let amount = getAmount() // calculates the amount
textField.setAmount(amount)
return false
}
}
я изменил UITextField к AmountTextField в shouldChangeCharactersInRange, так что я мог бы вызвать функцию setAmount в shouldChangeCharactersInRange. Но когда я делаю это, я получаю ошибку -
Objective-C метод 'TextField: shouldChangeCharactersInRange: replacementString:' обеспечивается методом 'TextField (: shouldChangeCharactersInRange: replacementString :)' конфликтует с дополнительным методом требования «TextField (: shouldChangeCharactersInRange: replacementString :) 'in protocol' UITextFieldDelegate '
Есть ли способ, которым я могу вызвать setAmount в shouldChangeCharactersInRange?
что делает установленное количество делать? вы пытаетесь переопределить метод, который уже существует в делетете –
Нет, просто форматирует сумму и добавляет ее в текстовое поле. Я добавил, что кусок кода, чтобы сделать его более ясным – Richa