2010-03-01 69 views
1

我想要做的是創建工具提示功能,以便我的教學應用程序中的某些單詞可以被點擊並定義彈出。對於彈出部分,我計劃使用來自在iPhone上提供氣泡的「AFInformationView」中的代碼。有沒有辦法創建自定義的UIDataDetectorTypes?

我正在努力的部分是如何將特定單詞的位置與泡泡相關聯。目前,我在自定義UITableCell上的UILabel上有文本。由於我用下面的方法計算行高:

[textToUse sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(stop-start, 500)]; 

我不確定特定單詞的座標是什麼。我在想,如果我創建了一個可以修復的自定義DataDetectorType。

如果有人知道如何做到這一點或有任何其他想法,我會很樂意聽到他們。

感謝,

安德魯

回答

1

我沒有創建自定義的UIDataDetectorTypes,但Craig Hockenberry用他的TwitterrificTouch做了類似的事情。

他使用正則表達式來檢測鏈接和其他東西。我將它提供給我的關鍵字,然後他們變成可點擊。他將按鈕放置在來自底層標籤的匹配文本之上。你可以谷歌很多的帖子,談論「把透明按鈕置於頂端」的各種東西,但克雷格的代碼是我能找到的唯一的示例/工作代碼。

這裏是鏈接: http://furbo.org/2008/10/07/fancy-uilabels/

0

我不認爲這是可能的。 iPhone目前支持的(少數)數據檢測器類型是用整數類型ID進行硬編碼的。似乎沒有擴展該類型列表的機制。

在錯誤跟蹤器中提交功能請求。我也會這樣做。

0

AFAIK,您無法創建自定義數據檢測器。

這種事情的最佳方法似乎是使用UIWebViews。至少這就是我所做的。但是,您不應該在UITableViewCell中使用UIWebView。事實上,UITableViewCell的子視圖不應該對用戶輸入做出響應。所以我認爲最好的方法是在單元被點擊時顯示一個UIWebView。

+0

「所以我認爲最好的辦法是顯示一個UIWebView當電池被竊聽。」 您能否再描述一下這種方法? – KingAndrew 2010-03-02 16:28:26

+0

假設您的表視圖位於導航控制器內部,請使用自定義設備生成的HTML來推送顯示錶格單元格內容的UIWebView。 – 2010-03-03 11:52:44

+0

一個很好的例子就是Tweetie 2.當你點擊時間軸上的推文時,會顯示一個顯示推文內容的UIWebView。 @推薦和鏈接在推特視圖中是交互式的,但不在時間線視圖中。 – 2010-03-03 11:54:27

0

UIWebViews中可能是一個可行的方法,但是,滾動你應該考慮整個文本應該解釋爲檢測words.You可以使用HTML標籤,使他們的藍色和提供但我怎麼能然後分配一個自定義的行爲,然後在safari中打開?

0

如果你想要自定義數據檢測器,你可以編寫一個提取器方法來主要在NSregularExpression的幫助下修補鏈接。例如

的NSString 正則表達式= @「(HTTP | HTTPS | FB)://((\ w)的 |([0-9] *)|([ - | _]))+(\ 。| /)「;修補所有鏈接,包括像fb://朋友這樣的文本內的Facebook網址。

然後你可以使用NSattributedString喲標記不同顏色的鏈接等。

ThreeTwenty擁有一個名爲TTTAttributedLabel的偉大庫,您可以在其中分配指向文本某些部分的鏈接。我也滾動相當快,如果你使用它在tableviews

https://github.com/mattt/TTTAttributedLabel

相關問題