通常、テキスト入力領域に触れるとキーボードがポップアップし、画面の空の領域に触れるとキーボードが消えます。それを実現する方法は?
私たちがiPhoneサファリで経験したことと同じように...
ありがとうございました
更新された方法(推奨):
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
これにより、すべてのサブビューの編集が終了し、最初のレスポンダーが辞任します。
その他の方法(すべてのテキストビューを想定):
これをステップバイステップで説明します。
-(IBAction)backgroundTouch:(id)senderなどのIBActionをView Controllerに追加します
BackgroundTouchアクションでは、ビューのすべてのテキストボックスにresignFirstResponderメッセージを送信する必要があります。これは残念ですが、現在FirstResponderステータスのオブジェクトを取得する方法がないため、必要です。次のようになります。
- (IBAction)backgroundTouch:(id)sender {
[someTextBox resignFirstResponder];
[anotherTextBox resignFirstResponder];
}
ビューにボタンコントロールを追加し、表示領域全体をカバーするようにサイズ設定します(ステータスバー、タブ、またはナビゲーションコントローラーを除く)。ボタンを選択し、レイアウトメニューに移動して、[背面に送信]を選択します。また、ボタンのタイプをカスタムに設定します。カスタムの描画コードを特に指定しない場合は表示されません。
ButtonのTouch Up InsideイベントをbackgroundTouch:アクションに接続して、試してください。
このシンプルなソリューションを使用してください
Swift 4:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
Swift 2:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
Objective Cの場合:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
UITextField、UITextView、およびすべてのサブビューで動作します。
バックグラウンドにボタンを置くことを忘れて簡単な解決策
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.textfieldName resignFirstResponder];
}
here でその問題に関するチュートリアルがあります(DONEキーのない数字キーボードについても)
> iOS 4.0の場合、別の解決策があります(さらに良い場合があります)このコードでは、ビューの任意の場所をタップしてキーボードを非表示にします。
// single tap to resign keyboard
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithBlock:^(UIGestureRecognizer *rec){
[input_text resignFirstResponder];
}];
self.singleTapRecognizer.numberOfTapsRequired = 1;
self.singleTapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:singleTapRecognizer];
resignFirstResponder
をコントロールに送信します。
この方法でもできます
ビューの背景をタッチしてキーボードを非表示にします
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[self view] endEditing:YES];
}
次のコードは、xamarin iOSプロジェクトで正常に機能します。
public override void TouchesBegan (NSSet touches, UIEvent evt){
View.EndEditing (true);
}
SwiftおよびiOS 8/9:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
self.view.endEditing(true)
}
'initWithBlock:'セレクターを使用して、上記のValの答えをコンパイルできませんでした。
このコードは私のために機能します。これをビューを定義するメソッドに追加します。ビューが構成されており、シングルタップに応答するサブビューが「chatView」であることに注意してください。キーボードを使用する入力フィールドビューの名前は「chatInput」です。
// single tap to resign (hide) the keyboard
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
singleTapRecognizer.numberOfTouchesRequired = 1;
singleTapRecognizer.cancelsTouchesInView = NO;
[chatContent addGestureRecognizer:singleTapRecognizer];
次に、タップ処理メソッドを追加します。
/**
* Handles a recognized single tap gesture.
*/
- (void) handleTapFrom: (UITapGestureRecognizer *) recognizer {
// hide the keyboard
NSLog(@"hiding the keyboard");
[chatInput resignFirstResponder];
}
私もこの問題を抱えていましたが、非常に迷惑でした。しかし、偶然にキーボードを取り除く方法を見つけました。ジョンにテキストメッセージを送信しているときに、会話を表示するためのキーボードがあり、表示される画面が縮小しているとします。それでは、左上のメッセージをクリックしてから、テキストメッセージの記録を持っている別の人を選択し、左上のメッセージをもう一度ヒットします。その後、戻ってJohnを選択します。いいえ、ジョンとの会話に戻りました。キーボードが消えてしまいました。縫い目はとても好きですが、それはかなり速いです。あなたは彼らがキーボードに隠すボタンを置くだけだと思うだろう笑.