私は現在、Swift 3 で最初の共有拡張機能を開発しています。これは実際には、Safari からテキストまたは URL を直接共有する非常に単純な拡張機能です (Web ページのコンテンツからテキストまたは URL を選択することによって)。
ShareViewController (SLComposeServiceViewController) の didSelectPost() で UIAlertController を表示したいのですが、実際にはうまくいきません。アラートは、ユーザーが投稿ボタンをタップした直後に数ナノ秒だけ表示されます。参考までに、これに使用しているコードは次のとおりです。
func displayUIAlertController(title: String, message: String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil)
self.present(alert, animated: true, completion: nil)
}
そして didSelectPost() で
displayUIAlertController(title: "title", message: "test")
共有拡張機能から UIAlertController を表示する方法はありますか? ありがとう。
編集。私はそれを手に入れたと思いますが、今の私の唯一の懸念は、Appleが私のアプリをAppStoreで有効にするときに、これがAppleによって受け入れられることを確実にすることです(これは私の最初のアプリであり、有料の開発者アカウントさえ持っていません)まだ)
これが私の解決策です:
func displayUIAlertController(title: String, message: String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { (action: UIAlertAction!) -> () in
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
}))
self.present(alert, animated: true, completion: nil)
}
そのため、ユーザーが didSelectPost() の最後ではなく、アラートのボタンをクリックした後に self.extensionContext!.completeRequest() が呼び出されるようになりました。それは魅力のように機能しますが、これが「安全な」解決策であるかどうかはまだ疑問です。もしそうなら、私の解決策は他の関連する質問に役立つと思います。
うまくいけば、私に知らせてくれる人。