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个字符,则生成的tweet视图根本没有任何文本,字符倒计时设置为140.在这种情况下我可能预期会截断,尽管它似乎没有记录在类引用在初始文本太长时会发生一种或另一种情况,但我可以接受在传递给setInitialText之前必须截断到最大推文长度.
我不明白的是,某些短于140个字符的消息也会产生空的推文视图.
最初我看到似乎是一个完全有效的字符串,139个字符失败.我注意到缩短字符串使其工作.但经过大量的实验,我还注意到用相同长度的随机文本替换碰巧出现在文本中的URL使其工作.换句话说,URL本身导致了问题.
所以我想也许我正在使用的URL有些奇怪,但我把它提炼到了这个.这个工作:
NSString *body = @"............................................................................................................................................";
虽然这不是
NSString *body = @"............http://a........................................................................................................................";
观察:
>它们都是140个字符长(并在控制台中用[体长]报告).唯一的区别是在第二个中间嵌入了一些模糊的URL.
>字符串中URL的位置似乎并不重要,但如果我将这些非句点字符中的任何一个更改为句点(从而使其不再像URL一样),它就不再被打破.
>如果我缩短了破损的那个,结束了14个周期,它就可以了.也就是说,嵌入在总长度为126个字符的句点中的这个特定URL是可以的. 127或更大被打破.不清楚这与URL本身的长度有何关系.
有人见过这样的东西吗?知道发生了什么事吗?我做错了什么,或者iOS Twitter框架刚刚破解?
解决方法
请在dev.twitter.com https://dev.twitter.com/discussions/5024上查看此讨论
(如果可以的话,我会将其作为评论而非答案发布,但我没有足够的SO可信度,所以我认为如果感兴趣的话我也会添加以下观察结果).
仅添加没有URL的文本时,字符计数按预期工作.
使用addURL:方法添加URL会导致使用推文的21个字符(20个用于URL加空格).在初始文本中添加URL会导致20个字符用于URL.
当包括单个URL(使用任一方法)时,当总字符数超过138(例如,对于URL空间为20个初始文本的字符为20)时,框架失败,从而丢失2个字符.只使用一个URL,设置初始文本然后使用addURL添加URL的顺序没有任何区别.
当添加2个URls时,当总字符数超过113而失去27个字符时,它会失败!
但是,对于2个或更多,如果在设置初始文本之前添加URL,则会失败,总计数为136.因此,每个URL再次丢失2个字符.
摘要/解决方法 – 如果只包含1个URL,那么在初始文本中添加它将比使用addURL:方法给你一个额外的字符,但你仍然总是短2个字符.如果使用addURL添加2个或更多URL:然后在初始文本之前添加它们,但在修复错误之前,每个URL仍会丢失2个字符.
我已经提交了一个雷达,但根据这个Can I browse other people’s (Apple) bug reports?,报告错误的次数越多,给予的优先级越高,因此值得其他人提交它以增加它的优先级.