有两种方法可以做到这一点,就像 Slack 一样,Meiwin在这里有一篇中等帖子A Stickler for Details:Implementing Sticky Input Field in iOS来展示他是如何做到这一点的,他实际上把一个空UIView
的作为inputAccessoryView
然后跟踪它的坐标在屏幕上知道将他的自定义视图与空视图相关的位置,如果您要SplitViewController
在 iPad 上支持,这种方式会很有帮助,但如果您对这种方式不感兴趣,您可以看看我是如何做到的喜欢这张图片
这是刷卡之前
这是之后
实际上,我所做的只是从inputAccessoryView
窗口拍摄快照并将其NavigationController
放在TableViewController
我正在使用Jon Kent的SideMenu,使用UISideMenuNavigationControllerDelegate
var isInputAccessoryViewEnabled = true {
didSet {
self.inputAccessoryView?.isHidden = !self.isInputAccessoryViewEnabled
if self.isInputAccessoryViewEnabled {self.becomeFirstResponder()}
}
}
func sideMenuWillAppear(menu: UISideMenuNavigationController, animated: Bool) {
let inputWindow = UIApplication.shared.windows.filter({$0.className == "UITextEffectsWindow"}).first
self.inputAccessoryViewSnapShot = inputWindow?.snapshotView(afterScreenUpdates: false)
if let snapShotView = self.inputAccessoryViewSnapShot, let navView = self.navigationController?.view {
navView.addSubview(snapShotView)
}
self.isInputAccessoryViewEnabled = false
}
func sideMenuDidDisappear(menu: UISideMenuNavigationController, animated: Bool) {
self.inputAccessoryViewSnapShot?.removeFromSuperview()
self.isInputAccessoryViewEnabled = true
}
我希望这会有所帮助:)