繁体   English   中英

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

[英]Dismiss keyboard with swipe gesture (as in Message app)

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

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

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

https://github.com/danielamitay/DAKeyboardControl

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

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

现在,只需更改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

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

在此输入图像描述

希望有助于解决您的问题

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

在UIScrollView中关闭键盘

希望能帮助别人。

您可以使用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]; } 

完成!

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的工具,你可以看到层次结构的视图。

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

我要去试试,我会告诉你我是怎么走的。

简短的回答; 他们最有可能在那里做一些'私人API'的事情。

我非常确定键盘位于应用程序窗口上方的独立视图中(您无法访问/控制它,无论如何,它始终显示在顶部)。 您可以做的最多是让输入视图成为/退出第一响应者状态,键盘将相应地显示/消失:全部或全部。

您可以获得键盘视图的句柄并更改其框架属性(使用记录的类和未记录的类的未记录的属性),但我很确定这会让您被踢出商店。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM