1

現在のテキスト フィールドにテキストを送信するための UITextInput デリゲートで設定されたカスタム キーボードがあります。しかし、textFieldShouldReturn メソッドを呼び出すために「リターン」プレスも送信する必要があります。私が知る限り、UITextInput はこれを許可していません。(リターンキーに何らかの特定の文字がない限り?)

では、「return」キーを押した値をテキスト フィールドに渡して、textFieldShouldReturn をトリガーするにはどうすればよいでしょうか。

4

3 に答える 3

2

リターンキーの特定の文字は\n、文字列の最後にカーソルを次の行に配置することを追加しています...

*その後、実際に textFieldShouldReturn メソッドを呼び出すには、何らかの理由でそれを行いたい場合は、他のメソッドと同じように呼び出すだけです。

于 2013-02-21T15:46:45.200 に答える
1

これを実装する必要があります:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}
于 2013-02-21T15:46:36.913 に答える
0

既にカスタム キーボードを使用しているため、ここでは間違った方向に向かっています。これにより、UITextFieldDelegate を使用してリターン キー検出の問題を解決する必要がなくなります。

textFieldShouldReturn: は、ユーザーがリターン キーを押したことを検出するために使用される UITextField のデリゲート メソッドです。このメソッドがなければ、通常の UIKeyboard から改行文字を検出するために textField:shouldChangeCharactersInRange:replacementString: を使用する必要がありますが、これは大変なことです。

ただし、キーボードに特別な操作を行う特定のボタンがある場合は、そのボタンを IBAction メソッドに直接接続します。

だから、このようなもの:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
   [self returnKeyPressed:textField];
   return NO;
}

- (IBAction)returnKeyPressed:(id)sender {
   // Do whatever you want done
}

カスタム キーを returnKeyPressed: に接続すると、ハードウェア キーボードと仮想カスタム キーボードの両方が returnKeyPressed: になり、動作は一貫します。

UITextFieldDelegate メソッドに加えて、デリゲートが returnKeyPressed: を確実にサポートするように、小さなプロトコルを定義することをお勧めします。

于 2013-02-21T16:15:38.660 に答える