MonoTouch.Dialog:通过触摸DialogViewController中的任何位置来解除键盘

Mik*_*enz 16 xamarin.ios monotouch.dialog

注意:有两个类似的SO问题(1) (2),但它们都没有提供答案.

TL; DR:如何通过让用户触摸视图中的任何空白区域来解除MonoTouch.Dialog中的键盘?

我正在使用MonoTouch.Dialog和UITabBarController编写应用程序.我的一个标签是"设置"......

设置屏幕

当用户开始输入时,键盘会阻碍标签栏...

在此输入图像描述

使用MonoTouch.Dialog,解除键盘的唯一方法是转到最后一个字段并按"返回"键.考虑到用户在键盘消失之前无法按任何标签这一事实,我想要一个更好的方法来做到这一点.即,如果用户点击屏幕上的任何其他位置,则关闭.

没有MonoTouch.Dialog,它很简单:只需覆盖TouchesBegan并调用EndEditing.但这不适用于MT.D. 我已经尝试了子类化DialogViewController并覆盖那里的TouchesBegan,但它不起作用.我现在不知所措.

或者,我想知道,放弃标签栏会更好吗,所以我可以使用顶部带有"后退"按钮的UINavigationController,它不会被键盘隐藏?

mig*_*aza 30

我建议你使用一个不会对TableView事件处理程序造成干扰的点击手势识别器:

var tap = new UITapGestureRecognizer ();
tap.AddTarget (() => dvc.View.EndEditing (true));
dvc.View.AddGestureRecognizer (tap);
tap.CancelsTouchesInView = false;
Run Code Online (Sandbox Code Playgroud)

  • 添加tap.CancelsTouchesInView = false; 防止TapGestureRecognizer取消点击所有元素. (13认同)
  • 你还必须添加dvc.CancelsTouchesInView = false; 否则,这将取消您在页面上的所有其他点击! (3认同)