2012-11-05 136 views
1

我發現了幾個地方展示瞭如何繼承UIApplication.openURL,當用戶點擊UITextView中的超鏈接時調用這些地方。但是,我發現當他們點擊一個mailto鏈接時,這不會被調用,我只需要重寫mailto鏈接。我的應用程序包含一個電子郵件客戶端,由於Apple不允許我將我的應用程序設置爲「默認」電子郵件客戶端,我至少需要在自己的程序中使用我的應用程序發送電子郵件。UITextView攔截郵件鏈接

我第一次嘗試使用UIWebView代替,它確實允許我這樣做,但是這有一些顯示問題(我只是顯示純文本,它不像UITextView那麼好看)。

我也嘗試覆蓋UIApplication.canShowURL,但它永遠不會被調用,即使對於http:links也不會。我已經嘗試了子類化,並且「Swizzling」,都給出了相同的結果。

+0

您可以查看以下解決方案:http://stackoverflow.com/questions/4403992/possible-to-handle-your-own-http-url-schemes-in-ios – kineticfocus

回答

2

基於信息我發現這裏Possible to handle your own http URL schemes in iOS?,由kineticfocus的評論,我結束了:

註冊自定義URL方案http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

在UITextView中顯示我的文本之前,請查找每個有效的電子郵件地址和mailto:URL並將其轉換爲我的自定義URL方案。實施例的轉換:

[email protected] - >的myapp://[email protected]

的mailto:[email protected] - >的myapp://[email protected]

這是不理想的,因爲它使得文本由於轉換而變得更難閱讀(對於mailto:URL而言不是那麼多,而是對於文本中的普通電子郵件地址),但是在沒有轉到UIWebView的情況下是最好的選擇。

讓我印象深刻的是,UITextView支持自定義URL方案 - 在Windows世界中,我一直希望RICHEDIT窗口類將支持,但事實並非如此。

只發布這個作爲答案,而不是報告我的問題作爲一個重複,因爲我發現大多數其他一切都與UITextView無關,他們要麼使用UIWebView,要麼只是想從另一個應用程序或網站調用他們的應用程序。