有没有办法创建自定义UIDataDetectorTypes?

时间:2010-03-01 19:08:58

标签: iphone

我要做的是创建工具提示功能,以便可以点击我的教学应用程序中的某些单词并弹出定义。对于弹出式部分,我计划使用“AFInformationView”中的代码,该代码在iPhone上提供气泡。

我正在努力解决的问题是如何将特定单词的位置与气泡相关联。目前,我在自定义UITableCell上的UILabel上有文本。因为我用以下方式计算行高:

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

我不确定特定单词的坐标是什么。我想如果我创建了一个可能是修复的自定义DataDetectorType。

如果有人知道该怎么做或有任何其他想法,我会很高兴听到他们。

谢谢,

安德鲁

5 个答案:

答案 0 :(得分:1)

我没有创建自定义的UIDataDetectorTypes,但Craig Hockenberry使用他的TwitterrificTouch做了类似的事情。

他使用正则表达式来检测链接和其他内容。我提供了我的关键字,然后它们变得可以点击。他将按钮放在底层标签的匹配文本之上。你可以谷歌搜索很多关于“把透明按钮放在最上面”的帖子,但Craig的代码是我能找到的唯一的例子/工作代码。

这是链接: http://furbo.org/2008/10/07/fancy-uilabels/

答案 1 :(得分:0)

我不认为这是可能的。 iPhone当前支持的(少数)数据检测器类型使用整数类型id进行硬编码。似乎没有一种机制来扩展该类型列表。

在其错误跟踪器中提交功能请求。我也会这样做。

答案 2 :(得分:0)

AFAIK,您无法创建自定义数据检测器。

这种事情的最佳方法似乎是使用UIWebViews。至少那是我的所作所为。但是,您不应在UITableViewCell中使用UIWebView。实际上,UITableViewCell的子视图不应响应用户输入。所以我认为最好的方法是在点击单元格时显示UIWebView。

答案 3 :(得分:0)

UIWebViews可能是一种可能的方法,但在滚动时你应该考虑整个文本应该被解析以检测单词。你可以使用HTMl标签使它们变蓝并提供链接。但是我怎么能分配自定义行为然后在野生动物园开放?

答案 4 :(得分:0)

如果您想要自定义数据检测器,您可以编写一个提取器方法,以便在NSregularExpression的帮助下主要修补链接。例如

NSString regex = @“(http | https | fb)://((\ w) |([0-9] *)|([ - | _]) 。)+(\ | /)“;修补链接,包括文本中的Facebook URL,如fb:// friends。

然后你可以使用NSattributedString哟标记不同颜色的链接等。

ThreeTwenty有一个很棒的名为TTTAttributedLabel的库,您可以在其中指定文本某些部分的链接。如果你在tableviews中使用它我也会非常快地滚动

https://github.com/mattt/TTTAttributedLabel