2010-03-01 34 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

相关问题