41

UITextFieldまたはUITextViewを離れるときにキーボードが閉じられないという問題が発生していUIModalPresentationFormSheetます。さらに、ビューの背景として機能する大きなボタンを作成したので、ユーザーがフィールドの外をタップするとボタンがトリガーされます。通常のView Controllerで同じコードを使用していますが、期待どおりに機能します。モーダルView Controllerでは何もしません。任意の提案をいただければ幸いです。

- (BOOL)textFieldShouldReturn:(id)sender {  
 [titleTextField resignFirstResponder];
 return YES;
}

- (BOOL)textViewShouldReturn:(id)sender {  
 [synopsisTextView resignFirstResponder];
 return YES;
}

- (IBAction)textFieldDoneEditing:(id)sender {  
 [sender resignFirstResponder];
} 

- (IBAction)textViewDoneEditing:(id)sender {  
 [sender resignFirstResponder];
} 

- (IBAction)backgroundClick:(id)sender {  
 [titleTextField resignFirstResponder];
 [synopsisTextView resignFirstResponder];
}
4

7 に答える 7

119

以下のように NO を返すようにオーバーライドdisablesAutomaticKeyboardDismissalすると、私の同じ問題が修正されました。このコードをView Controllerに配置し、そこからキーボードを開始する必要があります。

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}

また、詳細な説明が必要な場合は、このSOの質問を確認してください。

于 2011-06-07T16:30:25.543 に答える
51

でお困りUINavigationControllerの方は、 のカテゴリよりも良い解決策があると思いますUIViewController。の動作を変更して、それを確認する必要がありますUINavigationController(topViewController私の意見では、これはすべてのViewControllerコンテナーがこれを処理する方法です)。

@implementation UINavigationController (DelegateAutomaticDismissKeyboard)
- (BOOL)disablesAutomaticKeyboardDismissal {
    return [self.topViewController disablesAutomaticKeyboardDismissal];
}
于 2012-05-08T22:54:32.293 に答える
3

プレゼンテーション スタイル「フォーム シート」を使用してモーダル ビューを表示している場合、Apple はキーボードを無視しないようです。ユーザーが多くの編集を行う場所 (つまり、 「フォーム」)。解決策は、プレゼンテーション スタイルを変更するか、それをそのまま使用することです。

于 2010-08-02T10:33:23.127 に答える
1

UITextFieldDelegate プロトコルを実装する場合、テキスト検証を行うと、この動作が誤って発生する可能性があります。テキストが無効なときに検証コードが textFieldShouldEndEditing から false を返す場合、フィールドは firstResponder ステータスを放棄できず、キーボードは次のビューの画面に残ります。

UITextField のキーボードの詳細は無視されません。いいえ、本当に

于 2016-05-06T23:45:25.733 に答える
0

UIModalPresentationPageSheet のサイズを変更することでこれを解決しました。ここで私の答えを見てください。

于 2010-12-15T22:17:46.070 に答える