我正在使用 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 */
}
Now if body
太长,即超过 140 个字符,生成的推文视图根本没有任何文本,字符倒计时设置为 140。我可能预计在这种情况下会被截断,尽管它似乎没有记录在类参考中无论如何,当初始文本太长时会发生什么,但我可以接受,我必须在传递到之前截断到最大推文长度setInitialText
.
我不明白的是某些消息are少于 140 个字符也会产生空的推文视图。
最初,我看到看似完全有效的 139 个字符的字符串失败了。我注意到缩短绳子就可以了。但经过大量实验后,我还注意到,用相同长度的随机文本替换文本中碰巧出现的 URL 就可以了。换句话说,URL 本身就有问题。
所以我想我使用的 URL 可能有些奇怪,但我将其简化为以下内容。这个有效:
NSString *body = @"............................................................................................................................................";
虽然这并不
NSString *body = @"............http://a........................................................................................................................";
观察结果:
- 它们的长度都是 140 个字符(并在控制台中以这种方式报告
[body length]
)。唯一的区别是第二个中间嵌入了一些类似于 URL 的东西。
- URL 在字符串中的位置似乎并不重要,但如果我将任何一个非句点字符更改为句点(从而使其不再像 URL),它就不再被破坏。
- 如果我把破损的部分缩短,把末尾的 14 个句号删掉,它就会起作用。也就是说,这个特定的 URL 嵌入句点,总长度为 126 个字符就可以了。 127或更大已损坏。不清楚这与 URL 本身的长度如何或是否相关。
有人见过这样的事情吗?知道发生了什么事吗?是我做错了什么,还是 iOS Twitter 框架被破坏了?