22

iPadキーボードをモーダルビューコントローラーから隠そうとしていますが、機能しません。resignFirstResponderを試しましたが、モーダルビューコントローラーを使用している場合は影響はありません。まったく同じUIViewControllerを使用して非モーダルUINavigationControllerでresignFirstResponderを試しましたが、キーボードが正しく非表示になりました。

誰かがこの問題を解決する方法を知っていますか?

ありがとう。

[更新]resignFirstResponderが機能するため、コードに問題があるようです(コードを使用する代わりに簡単なテストケースを作成しました)。しかし、私はまだ問題が何であるかを知りません。

4

5 に答える 5

34

どうやら、-[UIViewController disablesAutomaticKeyboardDismissal]iOS4.3でこの問題を解決するためにオーバーライドできる新しい方法があります。

于 2011-01-12T23:01:44.410 に答える
14

UIModalPresentationFormSheetを使っていたからです。他のすべてのものは期待どおりに機能します....それに数時間を無駄にしました。

于 2010-05-04T02:19:09.123 に答える
5

これは見つけるのが大変でした。iOSの貧弱なAPIデザインの1つのようです。@0xcedと@manicaesarの回答に感謝します。

これが、壁に頭をぶつけて立ち往生している将来の開発者のための私の統合された答えです。

シングルビューコントローラの場合は、オーバーライドdisablesAutomaticKeyboardDismissalしてNOを返します。

モーダルのナビゲーションコントローラーの場合は、次のように独自のUINavigationControllerサブクラスを作成します。

.h..で

@interface MyNavigationController:UINavigationController

@終わり

.m...で

@implementation MyNavigationController


#pragmaマーク-
#pragma mark UIViewController
-(BOOL)disablesAutomaticKeyboardDismissal{
    NOを返します。
}

@終わり

モーダルビューコントローラーを示すコード内。

UIViewController * someViewController = [[UIViewController alloc] init];

MyNavigationController * navController = [[MyNavigationController alloc] initWithRootViewController:someViewController];

navController.modalPresentationStyle = UIModalPresentationFormSheet;
navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizo​​ntal;
[自己presentModalViewController:navControllerアニメーション:YES];

于 2013-01-31T05:48:27.743 に答える
3

問題が確かにUIModalPresentationFormSheetであることを確認し、Apple rdar://8084017にバグレポートを提出しました。

于 2010-06-11T17:51:42.667 に答える
3

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

于 2010-12-15T22:51:50.547 に答える