调试与无法识别的选择器相关的异常

时间:2012-06-02 09:02:38

标签: objective-c debugging selector textfield unrecognized-selector

我想知道你是否可以帮助我。

我想创建一种情况,如果用户在文本字段中输入特定文本 - 他们将被带到新视图。

我正在努力让这个工作 - 我使用以下代码来煽动这个:

- (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 个答案:

答案 0 :(得分:0)

我怀疑会发生以下情况:

  1. 您在文本字段中;

  2. 当字段内容发生变化时,您会显示模态视图;

  3. 展示模态视图会尝试通过将textFieldDoneEditing发送到您的GameScreen对象来结束编辑会话;

  4. textFieldDoneEditing未定义为GameScreen,因此您的程序崩溃了。

  5. 修复方法是为您的班级定义该方法。

    由于textFieldDoneEditing不是iOS SDK的一部分(据我所见),我假设您在Interface Builder中将其定义为由文本字段“Editing Did End”事件触发的操作。您还可以适当地修改此绑定,以解决问题。