1

私は現在、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() が呼び出されるようになりました。それは魅力のように機能しますが、これが「安全な」解決策であるかどうかはまだ疑問です。もしそうなら、私の解決策は他の関連する質問に役立つと思います。

うまくいけば、私に知らせてくれる人。

4

1 に答える 1