2

アップルドキュメントは以下を提供します:

テキストフィールドが戻るボタンの押下を処理する必要があるかどうかを代理人に尋ねます。

- (BOOL)textFieldShouldReturn:(UITextField *)textField

パラメータtextField戻るボタンが押されたテキストフィールド。 Return Value YESテキストフィールドが戻るボタンのデフォルトの動作を実装する必要がある場合。それ以外の場合、NO

説明テキストフィールドは、ユーザーが戻るボタンをタップするたびにこのメソッドを呼び出します。このメソッドを使用して、ボタンがタップされたときのカスタム動作を実装できます。

私の質問は、戻り値は何をするのかということです。私はこのメソッドで動作を実装しているので、返されるものに違いはありません。これはアクションを実行するための正しい方法ではありませんか?

たとえば、検索関数を実装する場合、このメソッドまたは他の場所で検索アクションをトリガーする必要があります。

4

2 に答える 2

6

これは、ユーザーがキーボードの Return キーをタップしたときにアクションをトリガーする正しい方法です (ラベルが何であれ)。

デリゲート メソッドからの戻り値がtextFieldShouldReturn:問題になることはほとんどありません。単一のテキスト フィールドを扱っている場合は、問題ありません。

しばらく前に 1 つの問題に遭遇し、適切な状況下では戻り値が重要であることに気付きました。いくつかのテキスト フィールドとテキスト ビューを含む画面がありました。このテキスト フィールド デリゲート メソッドを使用して、ファーストレスポンダーをテキスト フィールドからテキスト フィールド、テキスト ビューに変更していました。このデリゲート メソッドに戻りYES、テキスト ビューを最初のレスポンダーにすると、改行がテキスト ビューに送信されていることがわかりました。

この結果、NO安全のために常にこのデリゲート メソッドから戻るようになりました。

于 2012-12-21T17:16:04.350 に答える
2

キーボードのリターン ボタンを押すと、textFieldShouldReturnが呼び出されます。戻り値に違いはありませんでした。

カスタマイズ例:

ユーザーが最初のテキスト フィールドから戻るボタンを押したときに 2 つのテキスト フィールドがある場合、次の方法で 2 番目のフィールドにフォーカスを与えることができます。

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSLog(@"textFieldShouldReturn:");
    if (textField.tag == 1)
    {
        UITextField *passwordTextField = (UITextField *)[self.view viewWithTag:2];
        [passwordTextField becomeFirstResponder];
    }
    else
    {
        [textField resignFirstResponder];
    }
    return YES;
}

したがって、このデリゲート メソッドを使用して、検索機能をトリガーできます。

于 2012-12-21T17:15:55.803 に答える