Вопрос по – MonoTouch.Dialog: Отмена клавиатуры при касании в любом месте DialogViewController

16

NOTE: There are two similar SO questions (1) (2), но ни один из них не дает ответа.

TL;DR: How can one dismiss the keyboard in a MonoTouch.Dialog by letting the user touch any empty space in the view?

Я пишу приложение, используя MonoTouch.Dialog и UITabBarController. Одна из моих вкладок "Настройки" ...

Settings screen

Когда пользователь начинает печатать, клавиатура закрывает панель вкладок ...

enter image description here

Используя MonoTouch.Dialog, единственный способ отклонить клавиатуру - перейти к последнему полю и нажать кнопку «Возврат». ключ. Учитывая тот факт, что пользователь не может нажимать на любую вкладку, пока клавиатура не исчезнет, я хотел бы сделать это лучше. А именно, чтобы уволить, если пользователь нажимает в любом месте на экране.

Без MonoTouch.Dialog это совсем несложно: просто переопределить TouchesBegan и вызвать EndEditing. Но это не работает с MT.D. Я пытался создать подкласс DialogViewController и переопределить там TouchesBegan, но он не работает. Я в настоящее время в растерянности.

Или, мне интересно, мне лучше отказаться от панели вкладок, чтобы я мог использовать UINavigationController с & quot; Назад & quot; кнопка сверху, которая не будет скрыта клавиатурой?

Ваш Ответ

4   ответа
0

public class CustomTableViewSource : MonoTouch.Dialog.DialogViewController.SizingSource
{
 public CustomTableViewSource(MonoTouch.Dialog.DialogViewController dvc) : base(dvc)
 {

 }

 public override void DraggingStarted(UIScrollView scrollView)
 {
   base.DraggingStarted(scrollView);

   if (scrollView != null)
   {
     scrollView.EndEditing(true);
   }
 }

}

30

Error: User Rate Limit Exceeded

var tap = new UITapGestureRecognizer ();
tap.AddTarget (() => dvc.View.EndEditing (true));
dvc.View.AddGestureRecognizer (tap);
tap.CancelsTouchesInView = false;
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstackoverflow.com/questions/10832014/…Error: User Rate Limit Exceeded Mike Lorenz
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

Error: User Rate Limit Exceeded

// 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);
};

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
2

Error: User Rate Limit ExceededError: User Rate Limit Exceeded :-)

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Mike Lorenz

Похожие вопросы