Как я могу показать inputAccessoryView в этом контроллере представления - PullRequest
0 голосов
/ 28 февраля 2019

У меня в контроллере есть функция, которую я вызываю

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 Ответ

0 голосов
/ 28 февраля 2019

Ваш CommentsLauncher никогда не станет первым респондентом в коде, который вы предоставили.InputAccessoryView UIResponder отображается, когда респондент становится первым респондентом.

Измените метод showLauncher на что-то вроде этого:

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

И вы должны увидеть представление вспомогательного ввода.

...