Как отправить действие от элемента NSToolbar первому ответчику TabViews - PullRequest
0 голосов
/ 22 октября 2018

Я хочу, чтобы элементы NSToolbar моего приложения Mac запускали действия первого объекта респондента.У меня есть приложение со следующим макетом раскадровки:

enter image description here

Как вы можете видеть, есть кнопка (Test Action) на панели инструментов окна.Это связано с функцией действия объекта первого респондента.Сама функция реализована в первом контроллере представления TabView.

class ViewController: NSViewController {
    @IBAction func testAction(_ sender: Any) {
        print("testAction")
    }
}

Однако действие никогда не запускается.Если я добавлю то же действие в TabViewController, оно сработает.

Если я установлю свойство nextRespodner для TabViewController в ViewController, это не поможет:

class TabViewController: NSTabViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        nextResponder = children.first // Does not help
    }
}

Каким-то образом цепочка респондента не работает, как я ожидал.У кого-нибудь есть решение этого?Вот пример проекта для выпуска: https://github.com/Iomegan/ResponderChainStoryboard

1 Ответ

0 голосов
/ 22 октября 2018

Добавьте это к ViewController:

override func viewDidAppear() {
    super.viewDidAppear()
    view.window?.makeFirstResponder(self)
}
...