Отладка исключения, связанного с нераспознанным селектором
Мне было интересно, если вы могли бы помочь мне.
Я хочу создать ситуацию, в которой, если пользователь вводит определенный текст в текстовое поле, он попадает в новое представление.
Я изо всех сил пытаюсь заставить это работать - я использую следующий код, чтобы спровоцировать это:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if ([string isEqualToString:@"\n"]) {
NSString *lowercaseactualanswer = [footballersurname lowercaseString];
NSString *lowercaseuseranswer = [textField.text lowercaseString];
if ([lowercaseuseranswer isEqualToString:lowercaseactualanswer])
{
CorrectScreen *screen = [[CorrectScreen alloc] initWithNibName:nil bundle:nil];
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:screen animated:YES];
}
else {
self.guess.text = [[NSString alloc]initWithFormat: @"%@ is incorrect", textField.text];
textField.text = @"";
}
}
return YES;
}
и я использовал тот же метод для перехода к различным экранам в другом месте моего кода с успехом (используя тот же метод, что и в трех строках экрана CorrectScreen *). Полученное сообщение об ошибке:
-[GameScreen textFieldDoneEditing:]: unrecognized selector sent to instance 0x6c43e20
и при добавлении точки останова исключения - зеленая стрелка останавливается на строке, начинающейся [self presentModal....] с потоком, выделяющим следующее:
-[GameScreen textField:shouldChangeCharactersInRange:replacementString:]
Я действительно не знаю, в чем проблема. У меня сложилось впечатление, что нераспознанная проблема селектора обычно связана с неправильной связью объектов, но я уверен, что я это сделал здесь.
У кого-нибудь есть какие-либо идеи? Я немного застрял на данный момент, и я уверен, что кто-то там может помочь!
Спасибо большое!
Энди
1 ответ
Я подозреваю, что происходит следующее:
вы находитесь в текстовом поле;
при изменении содержимого поля вы представляете модальное представление;
представив модальное представление, попытайтесь завершить сеанс редактирования, отправив
textFieldDoneEditing
на вашGameScreen
объект;textFieldDoneEditing
не определен дляGameScreen
, так что ваша программа падает.
Исправление определяет этот метод для вашего класса.
поскольку textFieldDoneEditing
не является частью iOS SDK (насколько я вижу), я предполагаю, что вы определили его в Интерфейсном Разработчике как действие, которое запускается событием "Редактирование завершено" в текстовом поле. Вы также можете соответствующим образом изменить эту привязку, чтобы устранить проблему.