7

一部のテキストフィールドにカスタムinputViewを使用していますが、テキストフィールドでresignFirstResponderを呼び出すと、カスタム入力ビューが閉じられません...何か提案はありますか?

UITextField *f=[[UITextfield alloc] init];
 UIView *view=[[UIView alloc] initWithFrame..];
   [f setInputView:view]; //random example of how to set a textfields input view to a custom view

いくつかの調査の後、この問題は、モーダルビューで表示されるviewControllerを操作する場合にのみ発生します...それ以外の場合は問題なく動作します...

ありがとう

-ダニエル

4

2 に答える 2

7

を呼び出す代わりに、ビュー自体またはそのスーパービューのいずれかをresignFirstResponder呼び出す必要があります。すべてのサブビューでファーストレスポンダー ステータスのビューを検索し、辞任を求めます。endEditing:endEditing:

endEditing:パラメータとしてブールフラグを取ります。設定されている場合、ファーストレスポンダーは強制的に辞任します。それ以外の場合は、フォーカスを維持できるようにすることができます (たとえば、入力が無効な場合)。UITextField の場合、これはデリゲートのshouldEndEditing:メソッドによって決定されます。

一般に、使用するのに適したパターンは次のとおりです。

- (void)saveAction:(id)sender
{
    if ([self.view endEditing:NO]) {
        NSString *text = self.textField.text;
        // save text, login, do whatever
    } else {
        // show an alert (or rely on whatever refused to resign to inform the user why)
    }
}
于 2011-08-30T16:54:57.780 に答える
4

モーダル ビューを使用する場合は、キーボードの自動非表示を有効にしてください。次のコードをビュー コントローラーに追加します。

- (BOOL)disablesAutomaticKeyboardDismissal
{
    return NO;
}
于 2012-06-01T21:28:46.160 に答える