【问题标题】:Can the keyboard be dismissed by touching outside of the cell in MonoTouch.Dialog? [duplicate]可以通过触摸 MonoTouch.Dialog 中的单元格外部来关闭键盘吗? [复制]
【发布时间】:2012-04-23 06:13:27
【问题描述】:

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

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

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

我注意到在 iPhone 上的菜单设置(常规->键盘->快捷方式)或输入凭据时,触摸外部区域不会让响应者退出。这是否意味着这是整个 iOS 的限制(或者 Apple 只是认为在这些情况下不合适)?

有没有办法做到这一点?

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

也许一年半后有人解决了?

【问题讨论】:

  • 你能改为显示“下一步”按钮吗……就像在 Safari 中填写网络表单一样?
  • 我没试过。我不知道下一步/完成按钮是否具有与 Enter 键不同的功能。

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


【解决方案1】:

我认为你有两个选择:

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

我认为第一个选项更好,因为 Safari 就是这样做的。

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

但是,如果屏幕空间紧张,它可能不适用于您的布局。在这种情况下选择选项 #2。

【讨论】:

    【解决方案2】:

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

    他的解决方案:

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

    【讨论】:

    • 您还必须添加 dvc.CancelsTouchesInView = false;否则这将取消您在页面上的所有其他点击!
    猜你喜欢
    • 2011-03-28
    • 2023-03-08
    • 2019-04-22
    • 1970-01-01
    • 2015-10-26
    • 2011-11-16
    • 2014-07-30
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多