0

全て、

クラスがUIControlに設定されているDetailViewControllerがあり、これらのバックグラウンドタッチイベントを完全に処理する「backgroundTouched」IBActionメソッドがあります。詳細ビューコントローラーをモーダルで表示するように変更すると、FormSheetで背景のタッチを検出する機能が失われるため、キーボードが背景のタッチで閉じられなくなります。原因は、以前はDetailViewが画面全体を占めていたため、すべてのデリゲートメソッドが起動されたが、モーダルで表示されるようになったため、これらのデリゲートメソッドとIBActionメソッドが通信できなくなったことが原因だと思います。

問題の分析は正しいですか?また、イベントを報告するためのモーダルプレゼンテーションを取得するにはどうすればよいですか?

ありがとう

   //Give it a nav controller
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:detailViewController];



/****************************************************
 *
 *  Use a modal form presentation for  form
 *  
 *
 ****************************************************/

    //Use a form sheet style for DetailView
    [navController setModalPresentationStyle:UIModalPresentationFormSheet];

    //flip-horizontal transition
    [navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];



[self presentViewController:navController animated:YES completion:nil];


 }  
4

1 に答える 1

1

これは、Appleがモーダルプレゼンテーション中にキーボードの閉じを処理する方法を選択したことに関連している可能性があります(つまり、通常は非表示になるときに基本的に非表示にしないでください。モーダルコンテキストでは、頻繁に上下する可能性があります)。モーダルダイアログがキーボードを閉じないを参照してくださいその質問で受け入れられた答えには良い説明があり、私の答えはナビゲーションコントローラーを使用するときの良い一般的な解決策を提供します。

于 2012-06-15T16:49:45.730 に答える