可以通过在MonoTouch.Dialog中触摸单元格来解除键盘吗?

时间:2012-04-10 22:40:50

标签: c# ios xamarin.ios monotouch.dialog

  

可能重复:
  MonoTouch.Dialog: Dismissing keyboard by touching anywhere in DialogViewController

我注意到,当触摸表格单元格外部(我认为是“部分”)时,不会调用touchesBegan方法,因此我无法调用EndEditingResignFirstReponder

我正在创建一个多行条目元素;因此,返回键转到新行而不是“返回”。这是预期的行为。但是,我无法解雇键盘。

我注意到iPhone上的菜单设置(General-> Keyboard-> Shortcuts)或输入凭据时,在外部区域触摸不会使响应者退出。这是否意味着这是整个iOS的限制(或Apple在这些情况下看不合适)?

有没有这样做?

我收集到的是一个相同的问题,但没有人提出有效的答案:
Can I dismiss the iPhone keyboard by touching the background of DialogViewController (MonoTouch.Dialog)?

也许在一年半的时间里有人解决了它?

2 个答案:

答案 0 :(得分:1)

miguel.de.icaza在另一个主题上回答了这个问题: https://stackoverflow.com/a/10864640/1134836

他的解决方案:

   var tap = new UITapGestureRecognizer ();
   tap.AddTarget (() =>{
       dvc.View.EndEditing (true);
   });
   dvc.View.AddGestureRecognizer (tap);

答案 1 :(得分:0)

我认为你有两个选择:

  • 在某处放置“完成”按钮
  • 在视图背景上连接触摸事件以解除

我认为第一种选择更好,因为它就是Safari所做的。

您可以将工具栏附加到键盘顶部,以模拟Safari对InputAccessoryView执行的操作。以下是在Obj-C中执行此操作的示例(应该很容易移植):http://gabriel-tips.blogspot.com/2011/05/input-accessory-view-how-to-add-extra.html

但是,如果屏幕空间紧张,它可能对您的布局不起作用。在这种情况下,请使用选项#2。