2010-03-25 56 views
1

我遇到問題。我的部分應用需要將文本顯示在表格中。文本需要可選/可複製(但不可編輯),文本中的任何URL都需要高亮顯示,並且點擊時允許我使用該URL並打開我的嵌入式瀏覽器。帶有可選/可複製文本的UITableViewCell,它也檢測iPhone上的URL

我已經看到了解決這些問題之一的兩個解決方案,但不是兩者都有。

解決方案1:Icon Factory's IFTweetLabel

我嘗試的第一個解決方案是使用由圖標工廠成爲可能,並且在Twitterrific使用的IFTweetLabel類。

儘管此解決方案允許鏈接(或任何可以通過正則表達式找到的東西)被檢測爲根據具體情況處理,但它不允許選擇和複製。

還有一個問題,如果一個URL足夠長以便包裝,該類重疊在URL上方以使其交互式的按鈕無法包裝和畫出屏幕,看起來很奇怪。

解決方案2:使用IFTweetLabel和處理手動複製

我想是保持IFTweetLabel到位,處理環節,但使用長按手勢,像如何實現複印的第二件事短信應用程序處理它。這只是工作,但它不允許任意選擇文本,整個文本被複制,或根本沒有被複制......非常黑白。

解決方案3:UITextView

我的第三個嘗試是一個UITextView添加爲表格單元格的子視圖。

這個不能解決的唯一問題是檢測到的URL不能被我處理。文本視圖使用UIApplicationopenURL:方法,該方法退出我的應用程序並啓動Safari。

此外,由於表格視圖可能會相當大,因此子視圖中添加的UITextView的數量會導致在整個表格中滾動顯着的性能拖延,特別是在iPhone 3G時代設備上(由於創建,佈局,每次合成一個單元格在屏幕上滾動等)。

所以我的問題,你所有的知識淵博的人在那裏是:我能做什麼?

是否UIWebView是最佳選擇?除了性能拖拽之外,我認爲webview可以解決所有上述問題,如果我沒有記錯的話,在2.0天之後,Apple文檔實際上推薦了需要文本格式/超鏈接的Web視圖。

任何人都可以想到一種方法來實現這個沒有性能拖動?

非常感謝大家誰可以提供幫助。

+0

對於#3,對於您未處理的URL問題,請看下面這個:http://stackoverflow.com/questions/1305544/how-to-open-uitextview-web-links-in-a -uiwebview-instead-of-safari – user102008 2011-04-27 00:33:46

回答

1

只要我點擊提交按鈕,一個新的想法打我。

我很專注於URL與文本和交互內聯,我不認爲這可能不是最好的解決方案。

我確定要實現這種行爲,無論性能問題如何,UIWebView都是最佳選擇。

但是,也許更好的用戶體驗/交互方式是不突出顯示URL內聯,而是將它們收集到幕後數組中,並將泄漏按鈕作爲單元的附件視圖呈現?

然後爲了選擇和複製文本,我可以使用UITextView關閉數據檢測器,而不必擔心鏈接被髮送到Safari並關閉我的應用程序。

當點擊披露按鈕時,可以將用戶提交到在文本中找到的網址,或者如果找到多個網址,請向用戶提供一個選擇器視圖以選擇要去哪個網址。

對這個想法的任何想法/批評是受歡迎的。

+0

您是否想過在每個單元格內部使用UIWebView(我之前嘗試過,操作不好),或者只是一個UIWebView而不是一個tableview(有興趣聽聽這是如何工作的,最終想試試這個)? – bpapa 2010-03-25 13:10:02

+0

我在想每個單元格都有一個'UIWebView'。你遇到了什麼問題?這只是表現是不可接受的嗎? – Jasarien 2010-03-25 13:15:48

+0

查看更多 - http://stackoverflow.com/questions/646809/how-do-i-use-a-uiwebview-in-a-table-cell – bpapa 2010-03-25 14:34:47

0

您可以通過覆蓋UITextField委託方法來防止編輯文本字段,以免它們應用任何編輯。這使得該領域可選擇並可複製,但可以防止更改。

問一個更好的問題是:你是否真的必須顯示實際的URL本身?你能離開只是一個網頁/位置名稱,只是server.host.domain前綴或其他一些網址的精簡表示?我不認爲任何人想要在移動設備的受限制屏幕上閱讀長URL。

如果你確實需要顯示整個網址,那麼我認爲詳細視圖就是要走的路。

+0

我可能應該提到UI是一個聊天視圖。消息將顯示在表格視圖中,並且如果其中一個用戶在聊天中鍵入或粘貼了一個URL,則應該可以訪問該消息。我不想改變網址的編寫或粘貼方式,因爲有人可能會根據該網址爲他們提供信息 - 例如:「嘿,看看這個網頁:*鏈接*」等。 – Jasarien 2010-03-25 13:18:19

+0

我嘗試了類似的顯示網址事情很匆忙。除非你談論TinyUrls之類的東西,否則他們會很快得到不可思議的長度,並且他們會使界面看起來像廢話。即使是聊天,我也會推薦在主視圖中使用截斷或符號表示的細節視圖。 – TechZen 2010-03-25 20:34:09

相關問題