2011-07-28 20 views
5

iPadでキーボードを隠そうとしていますが、なぜresignFirstResponderが動作しないのか分かりません。 しかし、popToRootはうまく機能しています。resignFirstResponderうまくいきませんか?

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


    return YES; 
} 

だから私はどうすればいいですか?

+0

http://stackoverflow.com/questions/3124828/resignfirstresponder-not-hiding-keyboard-on-textfieldshouldreturn –

+0

私は を配置しよう - (BOOL)disablesAutomaticKeyboardDismissal { リターンNO。 } - (BOOL)textFieldShouldReturn:(UITextField *)textField {...}でもキーボードはまだ隠されていませんでした。私が投稿したリンクの – crazyoxygen

+0

は、問題はAppleのバグかもしれません。 –

答えて

19

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

UPDATEは:Appleデベロッパフォーラムからthis threadによると、このための可能な回避策はdisablesAutomaticKeyboardDismissal方法を実装するナビゲーションコントローラサブクラスの内側からシートビューコントロールを提示することです。そうですね、

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
CustomNavigationController *navController = [[CustomNavigationController alloc] initWithRootViewController:myViewController]; 
theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet; 
[self presentModalViewController:theNavigationController animated:YES]; 
+0

可能な回避策とApple Developer Forumsのスレッドへのリンクを追加しました。 – samvermette

0

UITextFieldDelegateを実装しましたか?あなたがそれを実装していれば、これはうまくいくはずです。

+0

私はすでにを追加しています。また、delete @xibファイルもリンクします。しかしそれはまだ隠されていませんでした。 – crazyoxygen

+0

'textField.returnKeyType = UIReturnKeyDone'? – Legolas

+0

errr "textField.returnKeyType = UIReturnKeyDone"のために何をすべきか教えてください。 – crazyoxygen

1

-resignFirstResponderを送信する機会はありません。問題のビューに-endEditing:YESを送信するだけです。

7

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

- (BOOL)disablesAutomaticKeyboardDismissal { 
    return NO; 
} 
+0

クール!出来た! –

+1

+1これは本当に選択された答えであるべきです(明らかに元の選択された答えは一度に正しいものでした)。ありがとうBTW。 – Firo

0

(謝罪が...これは私がこの修正プログラムを掲載していますStackOverflowのサイト上の4位である。)私が取得しようと、iOSの7 XCodeの5 &を持つ巨大な問題を抱えていた

画面上のキーボードを非表示にします。

結局のところ、私は非常に簡単な解決策を見つけました。私はUITextFieldsを自分のフォームで無効にしました。驚くべきことに、これは画面上のキーボードを滑らせてしまうのに十分だった。

詳細here

驚くべきことに、これはさえモーダルUIViewControllers上で動作します。うん、それも私を驚かせた!!

関連する問題