У меня есть xib с моим представлением и NSPopover с переходным поведением:
В контроллере представления у меня есть действие для управления всплывающим окном:
@IBAction func moreClicked(sender: NSButton) {
if !moreOpen {
moreOpen = true
scriptsPopover.showRelativeToRect(sender.bounds, ofView: sender, preferredEdge: 2)
} else {
moreOpen = false
scriptsPopover.close()
}
}
Когда я нажимаю кнопку, всплывающее окно появляется, как и ожидалось. Но через 5 секунд он исчезает.
Я хочу, чтобы всплывающее окно представляло несколько кнопок и исчезало только тогда, когда пользователь нажимает одну из этих кнопок или щелкает в другом месте пользовательского интерфейса. Например, кнопка Autolayout Pin в Interface Builder.
Я попытался определить поведение как Transient, Semi-transient, Application-defined. У всех один и тот же результат: он отключается через несколько секунд.
Я попытался реализовать делегат popoverShouldClose и вернуть false, чтобы я мог им управлять. Он блокирует закрытие, но когда пользователь нажимает кнопку закрытия, он просто открывает новое всплывающее окно поверх старого. Всплывающее окно также теряет свою стрелку после того, как я возвращаю false из popoverShouldClose, что выглядит странно.
Вот запись раздражающего автоматического закрытия
moreClicked()
вызывается во второй раз? Это закроет всплывающее окно. - person Ken Thomases   schedule 26.04.2015