Это похоже на проблему с памятью.
Как вы создаете textField в своем коде?Вы правильно распределяете его?
Вы пробовали пошаговую отладку и проверку, является ли textField действительным объектом в функции pollTextField?
просто установите точку останова и введите в консоли gdb po textFieldчтобы увидеть, что он вам дает
Редактировать: * Ну вот, ваш ответ там.Текстовое поле создается, присваивается представлению, а затем освобождается, поэтому его жизненный цикл заканчивается, когда вы его отпускаете.
Представление теперь владеет им, но вы не можете ссылаться на него напрямую.
Добавьте значение тега в текстовое поле, затем приведите его к значению тега:
UITextField* textField = [[UITextField alloc] init];
textField.tag = 200;
[self.view addSubview:textField];
keyHandler = [[KeyHandler alloc] initWithTextField:textField];
keyHandler.delegate = self;
[textField release];
Затем в вашей функции pollTextField сделайте следующее:
UITextField * textField = (UITextField *) [self.viewviewWithTag: 200];
Так выглядит:
-(void) pollTextField:(NSTimer*) timer{
UITextField* textField = (UITextField*)[self.view viewWithTag:200];
NSString * str = textField.text;
NSString * lastChar;
if (!str || [str isEqualToString:@""]) {
//no new text
}else{
lastChar = [str substringFromIndex:[str length] - 1];
[self determineAction:lastChar];
lastChar = @"";
str = nil;
}
textField.text = @"";
}