Я знаю, что есть сообщения, касающиеся shouldChangeCharactersInRange, но ни одна из них не касается моей проблемы. Так это то, с чем я борюсь. У меня есть класс kMoneyTextField, который наследуется от UITextField. Я хочу разобрать каждый символ, введенный пользователем, прежде чем печатать его внутри TextField. К сожалению, мой метод shouldChangeCharactersInRange не вызывается - НИКОГДА!shouldChangeCharactersInRange не вызывается из класса, наследующего от UITextField
kMoneyTextField.h
@interface kMoneyTextField : UITextField <UITextFieldDelegate>
@end
kMoneyTextField.m
@implementation kMoneyTextField
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setDelegate:self];
}
return self;
}
-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
// WHY NOBODY CALLS ME?!?
return YES;
}
Я из идей, и я действительно нужен этот метод работать. Я работаю с xcode 6.4, ориентированным на ios7.0 +. Заранее благодарим за ваше время и помощь.
Является ли 'initWithCoder:' когда-либо вызываемым? Запишите его и посмотрите ... Если это не так, вы никогда не устанавливаете делегата, что объясняет, почему методы делегата не вызываются. – matt
Да, это называется, потому что я также установил там некоторые другие параметры и подписался на события, которые работают очень хорошо. –
Кстати, что такое 'TRUE'? Вы действительно должны возвращать «ДА» или «НЕТ» здесь. – matt