Как открыть окно приложения на панели инструментов, нажмите в расширении приложения Safari?

Я хотел бы открыть окно приложения / расширения, когда пользователь нажимает элемент панели инструментов в Safari. Это не вопрос о расширении Popover особенность. Основной причиной является закрытие / скрытие окна при деактивации и действиях пользователя (для работы требуются оба условия).

Расширение приложения Safari (имеется в виду новый предпочтительный / принудительный способ создания расширений для сафари от Apple) может открывать Popover или вызывать команду при нажатии на элемент панели инструментов. Но его нельзя скрыть программно ( https://forums.developer.apple.com/thread/105817). Согласно ответу bweinstein, он разрабатывается разработчиками Apple.

Мой пример использования - окно, содержащее WKWebView с загруженной веб-страницей. Когда пользователь нажимает что-либо там, я хочу открыть страницу в новой вкладке Safari (эта часть уже работает для меня в режиме Popover) и немедленно закрыть окно (это пока не работает для меня)

Поэтому я подумал, чтобы избежать встроенной функции Popover. Я хотел бы показать окно вместо, когда Command (override func toolbarItemClicked(in window: SFSafariWindow) {}) называется.

Я знаю, что это как-то выполнимо, например, расширение 1Password от agilebits делает именно это: когда вы щелкаете по элементу панели инструментов, отображается окно без кнопок закрытия / минимизации, без меню и т. Д. Оно работает именно так, как мне нужно, но я не знать, как этого добиться.

Я не знаю, следует ли определять представление как часть расширения Safari или как часть раскадровки с приложением и как получить к нему программный доступ и отображать его на экране, когда пользователь щелкает элемент панели инструментов.

Поскольку я новичок в разработке macos, у меня нет кода, которым можно поделиться. Важная часть из моего POV: - Info.plist's NSExtension->SFSafariToolbarItem->Action установлен в Command

Как указывалось выше, функция, которую мне нужно достичь, - это открывать и закрывать окно программно, когда пользователь щелкает элемент панели инструментов.

заранее спасибо

0 ответов

Не могли бы вы вызвать SFSafarWindow.openTab("httxxx://mysite.com", true, ...) на панели инструментов ItemClicked

Вы также можете вызвать SFSafariApplication.openWindow API и закрыть SFSafariWindow (вызывая windowObject.close()) -

Другие вопросы по тегам