16

注: 2 つの類似した SO の質問(1) (2)がありますが、どちらも回答を提供していません。

TL;DR: MonoTouch.Dialog でキーボードを閉じるには、ユーザーがビュー内の空きスペースに触れられるようにするにはどうすればよいですか?

MonoTouch.Dialog と UITabBarController を使用してアプリを作成しています。私のタブの1つは「設定」です...

設定画面

ユーザーが入力を開始すると、キーボードがタブバーを妨げます...

ここに画像の説明を入力

MonoTouch.Dialog を使用してキーボードを閉じる唯一の方法は、最後のフィールドに移動して "return" キーを押すことです。キーボードがなくなるまでユーザーがタブを押すことができないという事実を考慮すると、より良い方法が必要です。つまり、ユーザーが画面上の他の場所をタップすると閉じます。

MonoTouch.Dialog がなければ簡単です。TouchesBegan をオーバーライドして EndEditing を呼び出すだけです。しかし、これは MT.D では機能しません。DialogViewController をサブクラス化し、そこで TouchesBegan をオーバーライドしようとしましたが、うまくいきません。私は現在途方に暮れています。

または、タブバーを捨てて、キーボードで隠されないように、上部に「戻る」ボタンが付いた UINavigationController を使用できるようにした方がよいでしょうか?

4

4 に答える 4

30

TableView イベント ハンドラーに干渉しないタップ ジェスチャ レコグナイザーを使用することをお勧めします。

var tap = new UITapGestureRecognizer ();
tap.AddTarget (() => dvc.View.EndEditing (true));
dvc.View.AddGestureRecognizer (tap);
tap.CancelsTouchesInView = false;
于 2012-06-02T17:54:45.213 に答える
2

それについての私の質問も見逃しました:MonoTouch.Dialogのセルの外側に触れることでキーボードを閉じることはできますか? :-)

これは、MonoTouch.Dialog に対する私の一番の機能要求です。

あなたの質問に答えるには: いいえ、できません。私は検索して周りに尋ねましたが、答えは見つかりませんでした。

これは単なるセクション化された(グループ化された)テーブルであり、セクション化されていない場合はクリックする場所がないためだと思います。しかし、それは私の憶測です。

miguel か、monotouch に取り組んでいる人がこれに答えて、それが可能かどうか言ってくれることを願っています。今後の機能強化の可能性は?

于 2012-05-30T22:16:58.703 に答える
1

私は十分に満足できる回避策を見つけたので、自分の質問に答えています。

// I already had this code to set up the dialog view controller.
var bc = new BindingContext (this, settings, "Settings");
var dvc = new DialogViewController (bc.Root, false);

// **** ADD THIS ****
dvc.TableView.DraggingStarted += (sender, e) => {
    dvc.View.EndEditing (true);
};

これにより、ユーザーがビューを少しドラッグするたびにキーボードが閉じられます。テーブルビューに関連するタッチ イベントが見つからないので、これが次善の策です。他のアイデアを歓迎します。乾杯!

于 2012-05-31T02:10:19.370 に答える