使用滑动手势关闭键盘

Posted

技术标签:

【中文标题】使用滑动手势关闭键盘【英文标题】:Dismiss keyboard with swipe gesture 【发布时间】:2015-05-05 00:32:33 【问题描述】:

在 Messages.app 中,您可以通过滚动列表视图来关闭键盘。需要明确的是,它不仅仅是响应scrollViewDidScroll 事件。向下滑动时,键盘会随着您的手指移动。知道这是怎么做到的吗?

【问题讨论】:

【参考方案1】:

ios 7 起,可以使用

scrollView.keyboardDismissMode = .Interactive

来自文档:

UIScrollViewKeyboardDismissModeInteractive

键盘跟随 将触摸拖出屏幕,再次向上拉可取消 解雇。

【讨论】:

有没有不使用UIScrollView的方法? @Zorayr 看看我的回答 @Zorayr 我刚刚添加了一个滚动视图(确保其中包含的视图的高度大于滚动视图),并且它起作用了。设置背景以清除和隐藏滚动指示器,以便用户看不到它。【参考方案2】:

在 XCode 的属性检查器中,scrollView 有一个 Keyboard 属性。它有 3 个选项。

不要解雇 拖动关闭 关闭互动。

【讨论】:

【参考方案3】:

如果您使用的是 tableViewSwift 3Swift 4,则可以使用:

tableView.keyboardDismissMode = .onDrag

【讨论】:

【参考方案4】:

从 iOS7 开始,UIScroll​View 和所有继承自它的类(包括UITableView)都有一个keyboard​Dismiss​Mode 属性。在 Swift 5 和 iOS 12 中,keyboard​Dismiss​Mode 具有以下声明:

var keyboardDismissMode: UIScrollView.KeyboardDismissMode  get set 

在滚动视图中开始拖动时关闭键盘的方式。

请注意,UIScrollView.KeyboardDismissMode 是一个包含 noneinteractiveonDrag 情况的枚举。


#1。以编程方式设置keyboard​Dismiss​Mode

下面的代码 sn-p 显示了keyboardDismissMode 的可能实现:

override func viewDidLoad() 
    super.viewDidLoad()

    // Dismiss keyboard when scrolling the tableView
    tableView.keyboardDismissMode = UIScrollView.KeyboardDismissMode.interactive

    /* ... */


#2。在故事板中设置keyboard​Dismiss​Mode

作为上述编程方法的替代方法,您可以在 故事板 中为 UIScrollView/UITableView 设置 keyboard​Dismiss​Mode 值。

    选择您的UIScrollView / UITableView 实例, 选择属性检查器, 为键盘设置正确的值。

【讨论】:

【参考方案5】:

没有 tableview - 是的,它不是滑动,但它不是诀窍

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
    view.endEditing(true)

【讨论】:

以上是关于使用滑动手势关闭键盘的主要内容,如果未能解决你的问题,请参考以下文章

如何设置移动键盘光标的滑动手势?

滑动手势以隐藏 UITextView 内的键盘

点击手势关闭键盘似乎禁用 didSelectRow

JavaScript库,用于创建切换的画布外多级导航,允许无休止地嵌套子菜单元素,支持滑动手势、键盘交互和ARIA属性。

如何像 SwiftUI 中的 WhatsApp 一样在滑动时关闭键盘

Android 点击空白或滑动时候关闭软键盘(有scrollview的坑)