ios - 如何在此 View Controller 中显示 inputAccessoryView

标签 ios swift uiviewcontroller inputaccessoryview

我的 Controller 中有一个函数,我称之为

private func toggleLauncher() {
    let launcher = CommentsLauncher()
    launcher.showLauncher()
}

这本质上是在当前 View 之上添加一个具有半透明背景的 View 。

我想在新添加的 View 的底部渲染一个自定义的 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 添加到 View 中,我不确定为什么。

最佳答案

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

将 showLauncher 方法更改为如下所示:

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

您应该会看到输入附件 View 。

关于ios - 如何在此 View Controller 中显示 inputAccessoryView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929565/

相关文章:

ios - 等待 X 秒或等待用户输入

ios - iOS11出现键盘时,UITableView将键盘高度添加到contentSize

swift - 如何打印具有多个数据的标题和uitableview的uiwebview

iphone - 从 UIViewController 返回 NSString

ios - NSPredicate 仅返回与一对多关系中的其他实体相连的实体

ios - Objective-C - 无法通过 Firebase 动态链接打开我的应用程序

ios - 有没有办法找出 View Controller 是否从导航堆栈中弹出?

ios - 呈现 UIViewController View 的多种方式

ios - 如何快速动态创建堆栈 View ?

ios - 如何在 sks 文件 "SpriteKit action"中的 Xcode Action 编辑器上获取所有 Action 名称