0

我想知道您是否可以幫助我。調試與無法識別的選擇器相關的異常

我想創建一種情況,如果用戶在文本字段中輸入特定文本 - 它們會被帶到新視圖。

我在努力得到這個工作 - 我用下面的代碼來煽動這樣的:

- (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 

和添加一個異常breakpo時INT - 綠色箭頭停在行開始[自presentModal ....]與線程強調以下幾點:

-[GameScreen textField:shouldChangeCharactersInRange:replacementString:] 

我真的不知道問題出在哪裏。我的印象是,無法識別的選擇器問題通常與不正確地鏈接對象有關,但我確信我已經在這裏完成了。

有沒有人有任何想法?我現在有點卡住了,我確定有人可以幫忙!

非常感謝!

安迪

回答

0

我懷疑這會發生什麼情況如下:

  1. 你是在文本字段;

  2. 當字段內容發生變化時,您將呈現模態視圖;

  3. 呈現模式視圖將嘗試通過發送textFieldDoneEditing到您的GameScreen對象來結束編輯會話;

  4. textFieldDoneEditing沒有定義爲GameScreen,所以你的程序崩潰了。

該修復程序正在爲您的班級定義該方法。

由於textFieldDoneEditing不是iOS SDK的一部分(據我所知),我假定您在Interface Builder中將其定義爲由您的文本字段「Editing Did End」事件觸發的操作。您也可以適當修改此綁定,以解決問題。

+0

是的你是對的!我試圖辭去shouldChangeCharactersInRange類中的第一個響應者,因此當你在那裏建議和放棄它時創建textFieldDoneEditing類,它完美地工作。非常感謝! – user1309044

相關問題