Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 调试与无法识别的选择器相关的异常_Objective C_Debugging_Selector_Textfield_Unrecognized Selector - Fatal编程技术网

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

Objective c 调试与无法识别的选择器相关的异常,objective-c,debugging,selector,textfield,unrecognized-selector,Objective C,Debugging,Selector,Textfield,Unrecognized Selector,我想知道你是否能帮我 我想创建一种情况,如果用户在文本字段中输入特定文本,他们将被带到一个新视图 我正在努力让它工作-我使用以下代码来煽动这一点: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if ([string isEqualToString:@"\n"]) { NSStri

我想知道你是否能帮我

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

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

- (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*screen中的三行相同的方法),我收到的错误消息是:

-[GameScreen textFieldDoneEditing:]: unrecognized selector sent to instance 0x6c43e20
当添加一个异常断点时,绿色箭头停止在[self-presentModal…]开始的行,线程突出显示以下内容:

-[GameScreen textField:shouldChangeCharactersInRange:replacementString:]
我真的不知道问题出在哪里。我的印象是,未识别的选择器问题通常与未正确链接对象有关,但我确信我在这里已经做到了

有人有什么想法吗?我现在有点困了,我相信有人能帮上忙

非常感谢


安迪

我怀疑发生的情况如下:

-[GameScreen textField:shouldChangeCharactersInRange:replacementString:]
  • 您位于文本字段中

  • 当字段内容更改时,您将显示一个模式视图

  • 显示模式视图将尝试通过将
    textFieldDoneEditing
    发送到
    GameScreen
    对象来结束编辑会话

  • textFieldDoneEditing
    未为
    GameScreen
    定义,因此程序崩溃

  • 修复程序正在为类定义该方法


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

    是的,您是正确的!我试图让shouldChangeCharactersInRange类中的第一响应者辞职,因此,当按照您的建议创建textFieldDoneEditing类并在其中辞职时,它工作得非常好。非常感谢!