如何在此视图控制器中显示 inputAccessoryView
Posted
技术标签:
【中文标题】如何在此视图控制器中显示 inputAccessoryView【英文标题】:How can I show the inputAccessoryView in this view controller 【发布时间】:2019-02-28 15:53:00 【问题描述】:我的控制器中有一个我调用的函数
private func toggleLauncher()
let launcher = CommentsLauncher()
launcher.showLauncher()
这实质上是在当前视图之上添加一个视图,具有半透明背景。
然后我想在新添加的视图底部呈现一个自定义 inputAccessoryView
。
class CommentsLauncher: UIViewController
override func viewDidLoad()
super.viewDidLoad()
view.backgroundColor = UIColor(white: 0, alpha: 0.5)
func showLauncher()
if let window = UIApplication.shared.keyWindow
window.addSubview(view)
override var inputAccessoryView: UIView?
get
let containerView = UIView()
containerView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 50)
containerView.backgroundColor = .purple
return containerView
override var canBecomeFirstResponder: Bool
return true
虽然半透明背景是可见的,但我也没有看到 inputAccessoryView
添加到视图中,我不确定为什么。
【问题讨论】:
【参考方案1】:您的 CommentsLauncher 永远不会成为您提供的代码中的第一响应者。当响应者成为第一响应者时,会显示一个 UIResponder 的 inputAccessoryView。
将您的 showLauncher 方法更改为以下内容:
func showLauncher()
if let window = UIApplication.shared.keyWindow
window.addSubview(view)
becomeFirstResponder()
您应该会看到输入附件视图。
【讨论】:
啊!是的!那将是完全有道理的!非常感谢:)以上是关于如何在此视图控制器中显示 inputAccessoryView的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC / C#:如何显示属于另一个控制器的部分视图数据