在iOS 7上复制iMessage文本输入行为(UIScrollViewKeyboardDismissModeInteractive + 持久的 inputAccessoryView)。
在苹果iMessage应用的聊天视图中,可以交互式地关闭键盘。这个功能通过在iOS 7中公开引入UIScrollView上keyboardDismissMode属性和相应的枚举值来实现的。
忽略新的keyboardDismissMode属性,始终很难在不是第一响应者的情况下让UITextView可见,而这时候它仍然是第一响应者时,它还粘附在键盘上。新的keyboardDismissMode没有解决这个问题。RDRStickyKeyboardView是UIView的子类,其中包含一个UIScrollView实例(或子类)和一个粘在底部的文本输入视图。当用户点击文本输入视图时,它会随着键盘一起向上动画。用户可以在随后拖动键盘的同时,输入视图跟随并当用户停止拖动时回到原位。作为额外的奖励,RDRStickyKeyboardView提供的输入视图是自动增长的。
RDRStickyKeyboardView使用两个自定义的RDRKeyboardInputView类实例(我们可以称它们为A和B),用作输入视图,并包含在左侧的一个UIButton,中间的一个UITextView,以及右侧的一个UIButton。实例A始终位于视图的底部,B是A的UITextView的inputAccessoryView。一旦A的UITextView成为第一响应者,第一响应者状态会被传递给B,它会粘附在键盘的顶部。两个输入视图A和B中的UITextView实例中输入的文本是同步的。
查看示例项目以了解更多信息。
UITableView *tableView = ...;
RDRStickyKeyboardView *keyboardView = [[RDRStickyKeyboardView alloc] initWithScrollView:tableView];
keyboardView.frame = self.view.bounds;
keyboardView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
[self.view addSubview:keyboardView];代码被MIT许可证所授权。有关详细信息,请参阅文件LICENSE。