私はSafari App Extension Programming Guideの後にXCode 8.3とSwift 3を使ってSafari App Extensionを構築しています。拡張機能には、拡張機能のツールバー項目をクリックしたときに表示されるpopoverが含まれています。 Popoverビューには、ユーザーが実行できるアクションにリンクされたいくつかのボタンが含まれています。Safari App Extensionのポップオーバーをプログラムで閉じるにはどうすればよいですか?
アクションの実行後にポップオーバーを閉じるには、これらのボタンの1つをクリックします。デフォルトでは、ポップオーバーの外にある場所をクリックすると閉じられますが、ガイドやdocsのいずれかでポップオーバーを閉じる他の方法は見つかりませんでした。
私はNSPopoverがperformClose
メソッドを持っていることを知っているが、拡張内からポップオーバー自体にアクセスする方法があるように表示されません:アプリの拡張機能は、あなたがその内容が魔法のようにポップオーバー内に表示さSFSafariExtensionViewControllerを、提供することができます。
this StackOverflow answerで説明したように、私もdismissViewController
を使用してみましたが、私の見解では、コントローラself.presenting
は常にnilで、かつself.dismissViewController(self)
だけのメッセージで拡張クラッシュ:
dismissViewController:: Error: maybe this view controller was not presented?
を。
最後に、私はプログラム的にrelated questionに気付きましたopeningツールバーアイテムのポップオーバーは過去6ヶ月間は返答していません。これはAppleに、popoverのオープンとクローズの厳格な制限を単に与えるかもしれないと疑う。このような場合でも、限界が何であるかを知ることは賢明です。さて、私は同じこと@Aaronに取り組んでいると私は以下のようにそれを考え出し
よし@EricAyaが行わ: - それは
スウィフトコードをクリックし、ポップオーバーボタンをポップオーバー閉じます。 –
優秀、ありがとうございます。 – Moritz
'sfWindow'はどこで設定していますか? 'sfWindow'が展開されない限り、投稿したスウィフトコードは実行されません。さらに、このように 'popoverDidClose'を呼び出すとエラーが発生するため、問題は解決しません。 –