11

したがって、基本的には、いくつかのテキスト フィールドで構成されるフォームがあります。ユーザーは通常どおりフィールドに入力します。ただし、ユーザーはテキスト フィールドをダブルタップすることもできます。これにより、モーダル ビュー コントローラーが表示され、ユーザーはそのフィールドに関連する多数のオプションから選択できるようになります。

キーボードが閉じられたときに、モーダルを表示する前にファーストレスポンダーであったフィールドに対してキーボードがまだアクティブであるように、モーダルをキーボードの「上に」表示することはできますか?

現在、モーダルが表示されている間はキーボードが消え、モーダルが消えると再び表示されます。私には不格好に見え、気を散らします。合理化して、画面上のアニメーションの量を減らしたいです。

4

6 に答える 6

1

iOS のキーボードのフレームにアクセスできます。

キーボード通知をリッスンするコードを実装する必要があります (UIKeyboardWillShowNotification や UIKeyboardWillChangeFrameNotification など)。通知は、キーボードのフレームに関する情報を送信します。

Windows リファレンスの「キーボード通知ユーザー情報キー」の説明を参照してください。

あなたの目的に役立つでしょう:

UIKeyboardBoundsUserInfoKeyウィンドウ座標でキーボードの境界矩形を識別する CGRect を含む NSValue オブジェクトのキー。この値は、キーボードのサイズを取得するのに十分です。画面上のキーボードの原点を (アニメーションの前または後に) 取得する場合は、UIKeyboardCenterBeginUserInfoKey または UIKeyboardCenterEndUserInfoKey 定数を介してユーザー情報辞書から取得した値を使用します。

キーボード フレームの情報を使用して、そこにモーダル ビューを表示できます。

于 2014-08-11T11:06:03.030 に答える
1

テキストフィールドと UITextfield *flagTextfield; にタップ ジェスチャを追加するだけです。

UITapGestureRecognizer* doubleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(DoubleTapMethod:)];
doubleTap.numberOfTapsRequired = 2;
[self.txtTest addGestureRecognizer:doubleTap];


-(void)DoubleTapMethod:(UITapGestureRecognizer *)gesture
{

     [flagTextfield resignFirstResponder];
     NSLog(@"DoubleTap detected");
     //Set your logic on double tap of Textfield...
     //presents a modal view controller
}

- (void)textFieldDidBeginEditing:(UITextField *)textField{

        flagTextfield = textfield;
}
于 2014-08-11T13:57:13.657 に答える