1

ユーザーがUITextViewのハイパーリンクをタップしたときに呼び出されるUIApplication.openURLをサブクラス化する方法を示す場所をいくつか見つけました。ただし、mailtoリンクをタップしたときにこれが呼び出されないことがわかりました。必要なのは、mailtoリンクをオーバーライドすることだけです。私のアプリにはメールクライアントが含まれていますが、Appleは私のアプリを「デフォルト」のメールクライアントにすることを許可しないので、少なくとも自分のプログラム内のmailtoリンクが私のアプリを使用してメールを送信することを望んでいます。

代わりに最初にUIWebViewを使用してみましたが、これは可能でしたが、表示に問題がありました(プレーンテキストを表示しているだけで、UITextViewほど見栄えがよくありません)。

UIApplication.canShowURLもオーバーライドしようとしましたが、http:リンクの場合でも呼び出されません。サブクラス化と「Swizzling」を試しましたが、どちらも同じ結果になります。

4

1 に答える 1

2

私がここで見つけた情報に基づいてiOSで独自のhttpURLスキームを処理することは可能ですか?、kineticfocusによるコメントから、私は次のようになりました:

カスタムURLスキームに登録しますhttp://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

UITextViewにテキストを表示する前に、有効な各電子メールアドレスとmailto:URLを見つけて、カスタムURLスキームに変換します。変換例:

example@sample.com-> myapp://example@sample.com

mailto:example@sample.com-> myapp://example@sample.com

これは、変換のためにテキストが読みにくくなるため理想的ではありませんが(mailto:URLの場合はそれほど多くありませんが、テキスト内のプレーンな電子メールアドレスの場合)、 UIWebView。

UITextViewがカスタムURLスキームをサポートしていることに感銘を受けました。Windowsの世界では、RICHEDITウィンドウクラスがそれをサポートすることを常に望んでいましたが、サポートしていません。

私が見つけた他のほとんどすべてがUITextViewに関連していないため、質問を重複として報告するのではなく、これを回答として投稿するだけです。彼らはUIWebViewを使用しているか、別のアプリまたはWebサイトからアプリを呼び出したいだけです。

于 2012-11-08T21:44:29.303 に答える