通过像iOS 5中的短信应用程序一样拖动手指隐藏键盘

时间:2011-12-08 07:25:12

标签: iphone objective-c ios ios5

我的应用程序中有一个聊天功能,我试图通过向下拖动手指来隐藏键盘,就像你可以在IOS 5中的短信应用程序中隐藏键盘一样。

我已经将UITableView子类化了,但是一旦滚动开始,我就不再接听

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

我想知道如何滚动并找出手指在滚动过程中的位置,这样如果它开始靠近键盘,我就可以开始隐藏它了。

我认为这是很多人都想要的功能,有关如何制作它的想法吗?

5 个答案:

答案 0 :(得分:7)

DAKeyboardControl它是您正在寻找的MIT许可代码源。

答案 1 :(得分:4)

进一步的谷歌搜索显示,这个问题与以下内容重复:

How to move iPhone keyboard down like in Messages.app?

答案 2 :(得分:3)

我在Daniel's DAKeyboardControl library的帮助下在我的应用中启用了此功能。您可以使用一行语句实现隐藏酸度的iMessage样式键盘:

[self.view addKeyboardPanningWithActionHandler:^(CGRect keyboardFrameInView) {
    // Move interface objects accordingly
    // Animation block is handled for you
}];

答案 3 :(得分:2)

UITableView继承自UIScrollView,因此您可以使用UIScrollViewDelegate方法检测滚动位置,例如- (void)scrollViewDidScroll:(UIScrollView *)scrollView

答案 4 :(得分:2)

幸运的是,在iOS 7中,Apple在keyboardDismissMode上添加了方便的属性UIScrollView。现在,只需更改Storyboard上的单个属性或添加一行代码,您的应用就可以像消息一样工作。

此属性使用新的ScrollViewKeyboardDismissMode枚举。枚举的可能值如下。

UIScrollViewKeyboardDismissModeNone
UIScrollViewKeyboardDismissModeOnDrag
UIScrollViewKeyboardDismissModeInteractive

这是故事板属性在滚动时关闭键盘