3

私のプロジェクトには、多くの UITextField-s を含むページがいくつかあります。したがって、どのような場合でも機能する hideKeyboard という名前のユーティリティ メソッドを作成する方がよいと考えました。これが私の解決策ですが、実際にはこのコードの何かが正しくありません。これに対するより良い解決策はありますか?

+(void) hideKeyBoard {
    UITextField* t = [[UITextField alloc] initWithFrame:CGRectNull];
    [[UIApplication sharedApplication].keyWindow addSubview:t];
    [t becomeFirstResponder];
    [t resignFirstResponder];
    [t removeFromSuperview];
}
4

1 に答える 1

17

非常に簡単な解決策は、ここに記載されているレスポンダー チェーンを使用することです。

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) 
                                           to:nil 
                                         from:nil
                                     forEvent:nil];

アクションを送信するnilことで、レスポンダー チェーンに送信されます。もちろん、最初に応答する機会を得るオブジェクトは、firstResponder

補足 : この投稿を見た唯一の理由は、定期購読する価値のある週刊ニュースレターiOSDevWeeklyのためです。

編集

私はそれを行うブルートフォースの方法は

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
于 2012-08-09T08:55:57.463 に答える