iOS google 环聊键盘如何工作?

how iOS google Hangouts keyboard works?

我需要复制 google 环聊键盘。现在我正在使用自定义视图 inputAccessoryView。使用 inputAccessoryView 让我隐藏键盘 interactively(在 IB 的 TableViewController 中设置的选项),因此当用户向下滑动键盘时键盘被隐藏。

它们的键盘让您选择是否要发送文本或图库中的图像或拍照...当您点击 "Image Gallery button" 时,键盘会隐藏和显示图库中的图像在 space 键盘上。这是我的问题,我不知道如何隐藏键盘,但一直在完全相同的位置显示 "inputAccessoryView" ...我应该把显示图像的视图放在哪里?因为如果我将所有这些都包含在 "inputAccessoryView" 自定义视图中,那将一直显示,因为它将包含在我的自定义视图的 xib 中...

这是一张键盘行为的 gif:

有什么线索吗?

您可以使用 inputView 属性 文本字段。

The custom input view to display when the text field becomes the first responder.

@property(readwrite, strong) UIView *inputView

If the value in this property is nil, the text field displays the standard system keyboard when it becomes first responder. Assigning a custom view to this property causes that view to be presented instead.

The default value of this property is nil.

source

它基本上可以让您使用任何视图作为输入视图。

你可以这样 "hot swap" :

[textField resignFirstResponder];
textField.inputView = yourCustomView
[textField becomeFirstResponder];

inputAccessoryView 将保持不变(假设您的视图框架与键盘的视图框架匹配)。我似乎无法弄清楚隐藏键盘的动画,这可能有点棘手。有点 hackish 的方法是截取键盘的屏幕截图,将其添加为视图并制作动画。