34

これはテキスト フィールドのデリゲート メソッドですが、戻り値の型について疑問があります

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
  [textField resignFirstResponder];

   return NO;
}  

これは、戻り値の型が異なる同じメソッドです

-(BOOL)textFieldShouldReturn:(UITextField *)textField
 {
   [textField resignFirstResponder];

   return YES;
 }

両方で、i phone でキーボードを非表示にすることができます。しかし、戻り型「YES」または「NO」の意味は何ですか。違いは見られません。

4

4 に答える 4

32

ここでの他の回答に加えて(これは本質的に大きな違いがないこと、 return による最初の応答者の自動辞任がないことなどを確認します)、特に自動修正付きの戻り値に完全に依存YESする奇妙な出来事を発見しました.UITextField

次のシナリオを想定します。

  1. UITextField自動修正が有効になっている

  2. 次のようなデリゲート メソッドを実装しました (テキスト フィールドが破棄されます)。

    - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    {
        if (textField == self.myAutocorrectingTextField) {
            [self.myAutocorrectingTextField resignFirstResponder];
        }
        return YES; 
    }
    
  3. アプリを実行し、テキスト フィールドに「Cable」と入力してリターン キーを押し、最初の応答者として再署名します。

返されたときの結果YES:

  • テキスト フィールドのテキストが「Cable」から「Cables」に変更されます。

同様に応答する他のいくつかの単語をテストしました。

  • 「もの」が「もの」に変わった
  • 「十」から「十」
  • そして、ある時は「カー」が「カール」に、またある時は「カー」が「カープ」に変わりました

返されたときの結果NO:

ノーマル。テキスト フィールドのテキストは変更されません。

要約すれば...

を返すYESと、テキスト フィールドは既に正しい単語を自動修正する場合があります。ただし、これらは正当な単語であるため、「自動修正テキスト バブル」の 1 つを表示しません。

を返すNOと、テキスト フィールドは既に正しい単語を自動修正しません。

注: どちらの場合も、スペルが間違っている単語は常に修正されます。例えば:

  • 「Web」と入力すると、「Web」というテキストとともに「自動修正テキスト バブル」が表示されます。Return キーを押すと、デリゲートの戻り値に関係なく、テキストが修正に置き換えられます。
于 2013-12-06T23:50:21.577 に答える
10

個人的な経験に基づく違いの 1 つは、YES を返すと自動修正と自動大文字化がトリガーされ、NO を返すとトリガーされないことです。他にもやったことがあるかもしれませんが、今のところ気づいたのはそれだけです。

それが「デフォルトの動作」の意味です。

于 2013-07-05T04:22:10.870 に答える
0

私が見つけた最も重要な違いは、テキスト フィールドがコントロール イベントを発行した場合、が返されるように実装されていない限りUIControlEventEditingDidEndOnExit、テキスト フィールドがファーストレスポンダを辞任する原因となることです。 textFieldShouldReturnNO

于 2018-07-26T21:12:15.387 に答える
-5

textFieldShouldReturn は、キーボードの Return ボタンを処理できる場所です。

textFieldShouldReturn は、テキスト フィールドが戻るボタンの押下を処理するかどうかをデリゲートに尋ねます。

戻るボタンを処理する独自のコードを実装する場合は、NO を返すか、既定の方法で処理されるように YES を返す必要があります。

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

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

于 2012-07-19T10:21:28.787 に答える