如何使InputAccessoryView出现在UITabBarViewController的选项卡上方?

时间:2018-12-15 11:56:05

标签: ios swift uitabbarcontroller uitabbar inputaccessoryview

我有一个自定义视图,正在将inputAccessoryView用作tableViewController

导航控制器内的tableViewControlleris内的tabBarViewController

我设法使自定义视图正确显示为inputAccessoryView,并显示在底部,并在聚焦时随键盘向上移动。

我的问题是,它隐藏了我的tabBar,但我没有找到任何答案,除了2岁的未回答的问题。 我希望我的视图显示在tabBar上方,类似于播放歌曲时的音乐应用程序,歌曲和播放按钮以及下一个按钮显示在tabBar上方而不隐藏它。

使用Swift 4.2,Xcode 10.1,iOS 11目标,在iOS 12.1和12.1.1上进行测试

1 个答案:

答案 0 :(得分:0)

我已经能够实现这种效果,并建立了一个名为AMKeyboardFrameTracker的框架来实现这一目标

AMKeyboardFrameTracker.gif

但是首先您需要了解inputAccessoryView的工作方式

inputAccessoryView附加到另一个名为UITextEffectsWindow的窗口,该窗口显示在主应用程序窗口的顶部

使用inputAccessoryView的主要功能是与任何UIScrollView的交互式键盘关闭效果,因为通常您无法从本地键盘通知回调中获取键盘框架

但是使用AMKeyboardFrameTracker,我已经可以通过观察inputAccessoryView's superview的帧变化来获取键盘框架,因此它仍然使用inputAccessoryView,但是没有用户交互的空视图

Github repo中有一个示例,您可以下载并试用

注意 在示例应用程序中,如果您想使用ViewController,则使用普通的TableViewController而不是TableViewController,您仍然可以通过将CustomView添加到{{1} } navigationController's