1

キーボードの終了ボタンを押すと、自動的にキーボードが離れます。私はこれをやることをどうやって止めるのですか?キーボードの「完了」ボタンをキーボードから離して停止する

+1

私はそれがデフォルトでそれをしないと思った。完了ボタンに応答するデリゲートメソッドがありますか? – BoltClock

+1

うーん...これはそうではありません。あなたが記述している振る舞いを取得するには、テキストフィールドデリゲートの 'textFieldShouldReturn'メソッドで' resignFirstResponder'を呼び出さなければなりません。これを停止したい場合は、その委譲メソッドを見つけ、resignFirstResponderを呼び出さないでください。 – Alex

答えて

1

私は同様の状況でした。 [myTextField resignResponder]が発生したとき、キーボードは消えましたが、画面にキーボードを表示したかっただけです。

私は、画面の外に1つの余分なUITextFieldインスタンス、たとえばdummyTextFieldを作成しました。そのフレームはCGRectMake(-10、-10,5,5)です。

[myTextField resignResponder]の後、すぐに[dummyTextField becomeFirstResponder]を呼び出しました。したがって、キーボードはまだ生きていますが、ユーザーはdummyTextFieldを見ることができません。

私はそれを行うより良い方法があると信じています。しかし、私はこのようにして、うまくいきました。

2

ビューコントローラがUITextFieldの代理人として設定されていることを確認してから、shouldEndEditing:メソッドを実装してください。 NOに戻って、テキストフィールドをアクティブに保ち、画面上にキーボードを置いてください。

See Apple's docs here

もちろん、これは最善の方法ではないかもしれませんが、上記のドキュメントを読んだ後、適切なコールバックを見つけてプログラムのフローを適切に制御できるはずです。

2

お使いのコントローラがUITextFieldDelegatereference)のtextFieldShouldReturn:メソッドを実装する必要があります。

はあなたのビューコントローラは、Interface Builderを介して、またはコードのいずれかで、あなたのテキストフィールドのためのデリゲートとして設定されていることを確認してください:

- (BOOL) textFieldShouldReturn:(UITextField *)textField 
{ 
    return NO; 
} 
- (void) viewDidLoad 
{ 
    self.someTextField.delegate = self; 
} 

次に、あなたのビューコントローラでは、あなたはtextFieldShouldReturn:メソッドを実装する必要があります

あなたが指定しているのは、キーボードのreturn(done)キーが押されたときに何も起こらないということです。奇妙なことは、他の人が触れたように、これはまさにデフォルト動作であるということです。これは、1)あなたのテキストフィールドにresignFirstResponderと呼んでいるか、または2)このテキストフィールドがUIWebViewの中にあり、その行為が変わっていることを意味します。

関連する問題