如何在此视图控制器中显示 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#:如何显示属于另一个控制器的部分视图数据

如何在 SwiftUI 的视图控制器中实现数据绑定?

在 MobileSubstrate 调整中显示 UIView?

在视图控制器之间解析 JSON 数据

在容器视图中具有静态表的导航控制器

iOS - 如何在不按下按钮的情况下在视图控制器之间移动