gpt4 book ai didi

ios - InputAccessoryView 停靠在底部

转载 作者:IT王子 更新时间:2023-10-29 07:37:47 26 4
gpt4 key购买 nike

我正在尝试实现与 Apple 消息应用中底部文本输入栏类似的定位行为。

我尝试了很多方法,到处搜索,有很多类似的问题,但没有一个是令人满意的。

要指定:

  1. 在 View 底部有一个UIToolbar
  2. 工具栏随着键盘的出现和消失而跟随键盘
  3. 当键盘可见时,工具栏应位于键盘上方
  4. 当键盘隐藏时,工具栏保持(“停靠”)在 View 的底部

建议的解决方案:

手动设置工具栏动画以响应键盘出现通知

这个解决方案不满足第二个需求的特殊情况(工具栏随着键盘出现和消失):

  • 在 iOS 7 中,引入了 UIScrollViewKeyboardDismissMode。它启用用于关闭键盘的交互式手势。当用户平移过键盘的顶部边缘时,键盘框架逐渐跟随。此解决方案无法适应此行为,只会让工具栏停留在其动画位置。

此外,该解决方案也无法满足第三个要求的特殊情况(当键盘可见时,工具栏应保持在键盘顶部):

  • 旋转。此解决方案需要额外的、令人讨厌的无关代码(正如我们将在下一个提议的解决方案中看到的那样)来旋转工具栏以响应设备旋转。

此解决方案的另一个问题:

  • 键盘高度。使用此解决方案,工具栏不会被假定为键盘高度的一部分,因此必须编写额外的代码来支持内容的正确插入。

下一个建议的解决方案:

使用UIResponderinputAccessoryView

这个解决方案似乎是 Apple 打算支持这种行为的方式,因为它解决了手动设置工具栏动画的所有缺点。但是这个解决方案完全忽略了第四个要求(当隐藏键盘时,工具栏保持(“停靠”)在 View 的底部)。


似乎解决方案是使用 UIResponderinputAccessoryView,但不知何故使 inputAccessoryView 不会移动到 View 下方。我正在寻找干净的代码来完成这个。别处有精心设计的、近乎崇高的尝试,但如前所述,它们不符合要求。

在我的特殊情况下,我希望使用 UINavigationController 的工具栏,这会带来其他问题,因为这不是 UINavigationController 的预期行为。没关系,我愿意引入一些 hacky 修复来实现这一点。

最佳答案

Jason Foreman (@threeve) 刚刚向我展示了“那个”解决方案。在您的 View Controller (是的, View Controller )上添加 inputAccessoryView: 并返回您想要停靠在底部并使用键盘移动的 View 。它只是工作。 View 实际上不需要位于您的 View 层次结构中,它将由 View Controller 自动插入。

编辑:还实现 canBecomeFirstResponder 并返回 YES(如 Max Seelemann 所述)。 reloadInputViews 也很方便。

关于ios - InputAccessoryView 停靠在底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19764293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com