我正在使用 TWTweetComposeViewController(如果可用)从我的 iOS 应用程序内部发送推文。我使用样板文本预先填充视图控制器,然后让用户自行修改和发送。它在大多数情况下都很好用。蒸馏下来,它看起来像这样(body
指向一个有效的NSString
):
if (NSClassFromString(@"TWTweetComposeViewController")) {
TWTweetComposeViewController *iOS5twitter = [[TWTweetComposeViewController alloc] init];
[iOS5twitter setInitialText:body];
iOS5twitter.completionHandler = ^(TWTweetComposeViewControllerResult result)
{
[self.viewController dismissViewControllerAnimated:YES completion:nil];
};
[self.viewController presentViewController:iOS5twitter animated:YES completion:nil];
[iOS5twitter release];
}
else {
/* Do something else when the framework is missing */
}
现在如果body
太长,即超过 140 个字符,则生成的推文视图根本没有任何文本,字符倒计时设置为 140。我可能预计在这种情况下会被截断,尽管它似乎没有记录在类引用一种或另一种方式,当初始文本太长时会发生什么,但我可以接受我必须在传递到setInitialText
.
我不明白的是,某些短于 140 个字符的消息也会产生空的推文视图。
最初,我看到似乎是一个完全有效的字符串,但有 139 个字符失败。我注意到缩短字符串使它起作用。但经过大量试验后,我还注意到,用相同长度的随机文本替换恰好出现在文本中的 URL 可以正常工作。换句话说,URL 本身就是一个问题。
所以我想我使用的 URL 可能有些奇怪,但我把它提炼成这个。这个有效:
NSString *body = @"............................................................................................................................................";
虽然这不是
NSString *body = @"............http://a........................................................................................................................";
观察:
- 它们都是 140 个字符长(并在控制台中使用 以这种方式报告
[body length]
)。唯一的区别是在第二个中间嵌入了一些模糊的类似 URL 的东西。 - URL 在字符串中的位置似乎无关紧要,但是如果我将这些非句点字符中的任何一个更改为句点(从而使其不再像 URL),它就不会被破坏。
- 如果我缩短损坏的那一个,从末尾剃掉 14 个周期,它就可以工作。也就是说,这个特殊的 URL 嵌入在句点中,总长度为 126 个字符。127 或更大的已损坏。不清楚这如何或是否与 URL 本身的长度有关。
有人见过这样的东西吗?知道发生了什么吗?我做错了什么,还是 iOS Twitter 框架刚刚坏了?