4

ビューの一部に問題があります。セットアップの簡単な概要を次に示します。

Tab Bar Controller
|
--View Controller 1
|
--View Controller 2
|
--View Controller 2

特定のアクションで、View Controller 1 はモーダル ダイアログを表示します。このダイアログ内で、ユーザーが別のアクションを実行すると、別のモーダル ダイアログが表示され、最初のモーダル ダイアログを使用してビューが表示されます。

2 番目の ModalDialog には UITextField がありますが、テキスト フィールドに入力しようとしても何も起こりません。キーボードが表示され、textFieldDidBeginEditing メソッドが呼び出されますが。UITextFieldDelegate と必要なレスポンダーをセットアップしましたが、役に立ちません。

この問題の原因を知っている人はいますか?

どうもありがとう

4

4 に答える 4

3

ビューの変更やポップオーバーで、テキストフィールドがあなたが説明したような症状で正しくフォーカスされていないことが何度もありました。このような場合、アニメーションが終了するか、ビューが読み込まれるまで、呼び出しを延期することになります。becomeFirstResponderたとえば、ビュー コントローラーのviewDidAppearメソッドなどです。

または、becomeFirstResponderビューが変更/アニメーション化/などするのにかかる時間の適切なゲストメッセージで呼び出しを遅らせるだけです。つまり:

[textField performSelector:@selector(becomeFirstResponder)
                withObject:nil
                afterDelay:0.3];
于 2011-06-18T07:17:01.383 に答える
1

可能であれば、ViewControllerからモーダルダイアログを「チェーン」しようとします。

  • VCは最初のモーダルダイアログを開きます
  • 最初のモーダルダイアログはVCに通知します(おそらく委任を使用します)。
  • (必要な場合があります)最初のモーダルダイアログを閉じます
  • VCは2番目のモーダルダイアログを開きます
  • 幸せ!
于 2011-06-17T13:46:58.520 に答える
0

私があなたなら、ナビゲーションの階層を修正することを検討します。モーダル ダイアログはそのままでも十分に悪いと考えられていますが、モーダル ダイアログ内にモーダル ダイアログを組み込むことは、ユーザー インターフェイスの自殺行為です。これはユーザーを混乱させ、非常に非伝統的です。最初のモーダル ポップアップを使用して、単にコンテンツを交換する方法はありますか?

補足: ビューを として設定することについて言及しましたUITextViewDelegate。テキストボックスのデリゲートとして表示しましたか? 帰りですかNO、それともFALSEから- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)stringですか?

于 2011-06-21T15:19:07.993 に答える
0

「モーダル ダイアログ」とはどういう意味かUIModalPresentationFormSheetわかりません。モーダル プレゼンテーション スタイルまたは UIPopoverController を使用してモーダルに表示されたビュー コントローラーのいずれかを意味していると思います。

これが私の最善の推測です:あなたの「モーダルダイアログ」がすべてのユーザーインタラクションをキャプチャすると確信しています(デフォルトで)。したがって、最初のものを押すと、すべての入力フォーカスがキャプチャされます。2 番目のものを押すと、キャプチャが前のものと競合するため、キーボードが機能しません。

いずれにせよ、両方のタイプの「モーダル ダイアログ」は積み重ねられることを意図していません。技術的にはうまくいくかもしれませんが、インタラクションデザインの観点からは好きではありません。バグを修正したり回避したりする代わりに、モーダル ダイアログを再考してみてください。すべてを 1 つに収めることができます。たとえば、そのビュー内でナビゲーション コントローラーを使用したり、ビューを置き換えたり、コンテンツを反転したりします。

これが役立つことを願っています、マックス

于 2011-06-17T13:40:45.703 に答える