在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
。