既にカスタム キーボードを使用しているため、ここでは間違った方向に向かっています。これにより、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: を確実にサポートするように、小さなプロトコルを定義することをお勧めします。