我想在我的iOS应用中显示一些Facebook帖子。我从Graph API获得了整个帖子作为JSON对象。工作得很好。
因此,如果用户在此帖子中发布新帖子并标记任何页面,那么user-id(或page-id)也包含在该JSON对象中,为我提供文本内部的偏移量和长度,链接到该页面。 (听起来很奇怪,所以让我举个例子):
{
"id": "135416986571191_709831435796407",
"from": {
"category": "Musician/band",
"name": "DANNIC",
"id": "135416986571191"
},
"to": {
"data": [
{
"category": "Musician/band",
"name": "Tom & Jame",
"id": "423531801036780"
},
{
"category": "Record label",
"name": "Revealed Recordings",
"id": "104563552952573"
}
]
},
"message": "Wait For You (Tom & Jame Remix) is coming out in 2 days on Revealed Recordings!",
"message_tags": {
"14": [
{
"id": "423531801036780",
"name": "Tom & Jame",
"type": "page",
"offset": 14,
"length": 10
}
],
"59": [
{
"id": "104563552952573",
"name": "Revealed Recordings",
"type": "page",
"offset": 59,
"length": 19
}
]
},
"picture": "https://fbcdn-vthumb-a.akamaihd.net/hvthumb-ak-xfa1/v/t15.0-10/10876067_709831642463053_709831435796407_64260_924_b.jpg?oh=49c825ff152d98de125820093b5cff05&oe=5551397E&__gda__=1431085295_7c41923cf64cc0946a39e85b705ee691",
....
....
如您所见,有“ message_tags ”,其中包含两个页面ID,名称和偏移量和长度。我想用“UIButton”替换“消息”中的文本,或者只是指向该页面的链接。我怎么能这样做?
以下是该帖子在Facebook App中的内容截图:
正如您所看到的,“Tom& Jame”是可点击的,其余的(“显示的录音”除外)是普通文本。如果你点击'汤姆& Jame'它将切换到显示其页面的另一个View Controller。这正是我想要的内容。
我知道我可以为我的标签使用NSAttributedText,并使用NSLinkAttributedName使文本可单击。但我不希望我的应用程序切换到safari并打开Facebook页面,我想留在我的应用程序中,只是切换到另一个UIViewController,显示该页面的信息等。
即使我留在我的应用程序中,我可以将该应用程序的网址方案用于该链接吗?或者我可以在该标签内放置一个UIButton并处理我的视图控制器内的水龙头吗?
什么是最佳解决方案?任何帮助表示赞赏! :)
答案 0 :(得分:0)
我要做的是将文字放在UITextView
中并使用NSAttributedText
。我将以稍后可以解析的方式构建URL(足以让UITextView
呈现链接,但它不必是facebook上的真实URL。)
然后我会覆盖发送给shouldInteractWithURL
代表的UITextView
。在这里,我可以重新解析URL,检索数据,并加载我的后续视图控制器。