使用滑动手势关闭键盘(如在消息应用程序中)

Mic*_*tet 30 iphone uitableview uiresponder uigesturerecognizer ios

当键盘显示在iPhone的消息应用程序上时,如果用户从消息表视图开始向下滑动并继续进入键盘区域,键盘将开始关闭.如果他们在此过程中上下移动手指,键盘会随之移动.

Apple是否使用私有API执行此操作,或者是否有一种方法可以控制键盘(我假设)手势识别器?

Dan*_*tay 44

我创建了一个提供所需功能的UIView类别:

https://github.com/danielamitay/DAKeyboardControl

编辑:它确实已在应用商店中使用.

  • 就是棒!(_soneone_需要接受这个作为答案) (3认同)

ma1*_*w28 31

最简单的解决方案是设置以下两个属性:

轰!宝贝!

查看Acani Chats iPhone客户端 ChatViewController.swift的示例.

  • 这应该是公认的答案.在iOS 7之后,您只需要`keyboardDismissMode`. (2认同)

Mig*_*jal 26

幸运的是,苹果增加了方便的特性keyboardDismissModeUIScrollView,使你的生活变得更轻松.

现在,只需更改Storyboard上的单个属性,或者添加一行代码,您的应用就可以像Messages.app一样运行!

此属性使用新UIScrollViewKeyboardDismissMode枚举.此枚举的可能值如下:

UIScrollViewKeyboardDismissModeNone        // the keyboard is not dismissed    automatically when scrolling
UIScrollViewKeyboardDismissModeOnDrag      // dismisses the keyboard when a drag begins
UIScrollViewKeyboardDismissModeInteractive // the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss
Run Code Online (Sandbox Code Playgroud)

这是要更改为在滚动时关闭键盘的Storyboard属性:

在此输入图像描述

希望有助于解决您的问题

  • 这很棒。很兴奋,我除了勾选一个框之外无事可做。然后意识到我连接到键盘顶部的输入视图没有随之移动......doh。 (2认同)

Jer*_*sel 10

在iOS 7中,您现在可以在UIScrollView上以交互方式关闭键盘.

在UIScrollView中关闭键盘

希望能帮助别人.


Jon*_*asG 5

您可以使用UISwipeGestureRecognizer执行此操作.我不知道如何使用代码实现它,但如果你使用新的xcode 4.2 beta,那么这是一个简单的方法:

  1. 创建IBAction:

- (IBAction)dismiss:(id)sender;

  1. 转到xib中的视图,并将您查看的类设置为UIControl.

  2. 将UISwipeGestureRecognizer从库拖动并连接到视图.

  3. 将IBAction(TouchDown)与UISwipeGestureRecognizer连接.

  4. 编写代码来解雇键盘:

    - (IBAction)dismiss:(id)sender 
    
    {
    
      [yourTextField resignFirstResponder];
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

完成!