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 * screenの3行と同じ方法を使用)。受信するエラーメッセージは次のとおりです。

-[GameScreen textFieldDoneEditing:]: unrecognized selector sent to instance 0x6c43e20

例外ブレークポイントを追加すると、緑色の矢印は[self presentModal ....]で始まる行で停止し、スレッドは次のことを強調表示します。

-[GameScreen textField:shouldChangeCharactersInRange:replacementString:]

問題がどこにあるのか本当にわかりません。認識されないセレクターの問題は、通常、オブジェクトが正しくリンクされていないことに関連しているという印象を受けましたが、ここでそれを行ったと確信しています。

誰かアイデアはありますか?私は今少し立ち往生していて、そこにいる誰かが助けることができると確信しています!

どうもありがとう!

アンディ

4

1 に答える 1

0

何が起こるかは次のとおりだと思います。

  1. あなたはテキストフィールドにいます。

  2. フィールドの内容が変更されると、モーダル ビューが表示されます。

  3. モーダル ビューを表示すると、オブジェクトに送信textFieldDoneEditingして編集セッションを終了しようとします。GameScreen

  4. textFieldDoneEditingは に対して定義されていないGameScreenため、プログラムがクラッシュします。

修正は、クラスのそのメソッドを定義することです。

textFieldDoneEditing(私が見る限り)iOS SDKの一部ではないため、Interface Builderでテキストフィールドの「Editing Did End」イベントによって起動されるアクションとして定義したと仮定します。このバインディングを適切に変更して、問題を修正することもできます。

于 2012-06-02T09:36:47.053 に答える