【问题标题】:How can I show the inputAccessoryView in this view controller如何在此视图控制器中显示 inputAccessoryView
【发布时间】: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 添加到视图中,我不确定为什么。

【问题讨论】:

    标签: ios swift uiviewcontroller inputaccessoryview


    【解决方案1】:

    您的 CommentsLauncher 永远不会成为您提供的代码中的第一响应者。当响应者成为第一响应者时,会显示一个 UIResponder 的 inputAccessoryView。

    将您的 showLauncher 方法更改为以下内容:

    func showLauncher() {
        if let window = UIApplication.shared.keyWindow {
            window.addSubview(view)
            becomeFirstResponder()
        }
    }
    

    您应该会看到输入附件视图。

    【讨论】:

    • 啊!是的!那将是完全有道理的!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多