8

Possible Duplicate:
MonoTouch.Dialog: Dismissing keyboard by touching anywhere in DialogViewController

I'm using DialogViewController from MonoTouch.Dialogs. I'd like to be able to dismiss the keyboard by clicking on the background of the dialog.

I usually employ the technique of filling the view with a large custom button and placing it behind all the other elements. However, I can't make this work in the DialogViewController. I did this in LoadView and it just froze all the other controls.

Is there a relatively straightforward way of achieving what I want?

Community
  • 1
  • 1
dommer
  • 19,610
  • 14
  • 75
  • 137

2 Answers2

7

In view controller:

public override void TouchesBegan (NSSet touches, UIEvent evt)
    {
        base.TouchesBegan (touches, evt);

        myField.ResignFirstResponder();
    }

Edit: From what I've read, you can use the TouchesBegan event for the cell subview instead of the table itself. I'm not positive that works. Good luck :)

kwcto
  • 3,494
  • 2
  • 26
  • 33
  • +1 for actually having it in .net :) – Matt Williamson Aug 12 '10 at 00:26
  • 1
    +1 as it's a neat approach to the more general problem. However, it doesn't solve my problem with MonoTouch.Dialog. This is descended from UITableViewController, which doesn't seem to receive the TouchesBegan event. – dommer Aug 12 '10 at 09:05
  • -1 Doesn't work for MonoTouch.Dialog which is what the original question was asking. – cdeutsch Feb 29 '12 at 15:17
1

miguel.de.icaza answered this question on a different thread: https://stackoverflow.com/a/10864640/1134836.

His solution:

   var tap = new UITapGestureRecognizer ();
   tap.AddTarget (() =>{
       dvc.View.EndEditing (true);
   });
   dvc.View.AddGestureRecognizer (tap);
Community
  • 1
  • 1
valdetero
  • 4,624
  • 1
  • 31
  • 46