5

iPadでキーボードを非表示にしようとしていますが、resignFirstResponderが機能しない理由がわかりません。しかし、popToRootはうまく機能しています。

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
    NSString *desc = [NSString stringWithFormat:@"%@",[descTF text]];
    [textField resignFirstResponder];
    [self.navigationController popToRootViewControllerAnimated:YES];


    return YES;
}

それで、私に何をしてくださいと教えてもらえますか?

4

5 に答える 5

19

このフィールドは内部にありUIModalPresentationFormSheetますか?その場合、View Controllerが閉じられるまで、プログラムでキーボードを閉じることができないというのは既知の問題です。

更新:Apple Developer Forumsのこのスレッドによると、これに対する可能な回避策は、disablesAutomaticKeyboardDismissalメソッドを実装するナビゲーションコントローラーサブクラス内からシートビューコントロールを提示することです。だから次のようなもの:

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
CustomNavigationController *navController = [[CustomNavigationController alloc] initWithRootViewController:myViewController];
theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:theNavigationController animated:YES];
于 2011-07-28T04:40:54.560 に答える
7

samvermetteの回答をフォローアップするために、それがa内にあるUIModalPresentationFormSheet場合は、メソッドをオーバーライドして、disablesAutomaticKeyboardDismissal希望する動作を取得できるようになりました。次のメソッドをクラスに追加すると、UITextFieldsUITextViewsはresignFirstResponderに応答します。

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}
于 2012-03-17T23:53:43.023 に答える
1

を送信する機会はありません-resignFirstResponder。あなたがすべきことは-endEditing:YES、問題のビューに送信することです。

于 2011-07-28T04:48:01.247 に答える
0

実装しましたUITextFieldDelegateか?それを実装した場合は、これで動作するはずです。

于 2011-07-28T04:17:47.187 に答える
0

(お詫び...これは私がこの修正を投稿したStackOverflowサイトの4番目の場所です..)

XCode5とiOS7で、画面キーボードを非表示にしようとして大きな問題が発生しました。

最終的に、私は非常に単純な解決策を見つけましたUITextFields。フォームでを無効にしただけです。魔法のように、これはオンスクリーンキーボードをスライドさせるのに十分でした。

詳細はこちら

驚いたことに、これはモーダルでも機能しUIViewControllersます。ええ、それも私を驚かせました!

于 2014-04-22T13:49:36.513 に答える