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

当iPhone的Messages应用程序显示键盘时,如果用户从消息tableview开始向下滑动并继续进入键盘区域,键盘将开始closures。 如果在这个过程中他们的手指上下移动,键盘会随之移动。

苹果是用私有API来做这件事,还是有办法像这样控制键盘(我认为)手势识别器?

我创build了一个UIView类别,提供了所需的function:

https://github.com/danielamitay/DAKeyboardControl

编辑:它确实已经在应用程序商店使用。

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

  • UIViewController : UIResponder inputAccessoryView
  • UITableView : UIScrollView keyboardDismissMode

轰隆,宝贝!

查看Acani聊天 iPhone客户端 ChatViewController.swift的例子。

幸运的是,苹果在UIScrollView上添加了方便的属性keyboardDismissMode ,让您的生活变得更轻松。

现在,您的应用程序可以像Messages.app一样改变Storyboard上的单个属性,或者添加一行代码!

该属性使用新的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 

这里的Storyboard属性更改为closures滚动键盘:

在这里输入图像说明

希望能帮助解决你的问题

在iOS 7中,您现在可以在UIScrollView上交互式地closures键盘。

在UIScrollView中closures键盘

希望能帮助别人。

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

  1. 创build一个IBAction:

- (IBAction)dismiss:(id)sender;

  1. 在你的xib中转到你的视图,并为你查看UIControl。

  2. 将UISwipeGestureRecognizer从库中拖放到视图中。

  3. 连接IBAction(TouchDown)和UISwipeGestureRecognizer。

  4. 编写代码以closures键盘:

     - (IBAction)dismiss:(id)sender { [yourTextField resignFirstResponder]; } 

完成!

swift中,你可以使用下面的代码来获取当前键盘的视图容器( 如果存在 ),比你可以改变代码中的框架:

 UIApplication.shared.windows .filter{ NSStringFromClass($0.classForCoder) == "UIRemoteKeyboardWindow" } .first?.subviews.filter { NSStringFromClass($0.classForCoder) == "UIInputSetContainerView" } .first?.subviews.filter { NSStringFromClass($0.classForCoder) == "UIInputSetHostView" } .first 

顺便说一下,这里有一个叫Reveal的工具,可以让你看到分层的视图。

我认为最好的方法是在文本input容器上方放置一个隐藏的button。 一个长条,当它检测到触地并释放或取消,然后隐藏键盘。

我要去尝试一下,我会让你知道我怎么走。

简短的回答; 他们很可能在那里做一些“私人API”的事情。

我很确定键盘是独立的,在你的应用程序的窗口之上(你不能访问/控制它,它总是显示在最上面,不pipe是什么)。 你可以做的最多的是input视图成为/退出第一响应者状态,并且键盘将相应地出现/消失:全部或全部。

你可能会得到一个键盘视图的句柄,并改变它的框架属性(使用logging的类的未logging的属性和未logging的类),但我敢肯定,你会被踢出商店。