TWTweetComposeViewController中的错误?

Pau*_*eri 8 twitter frameworks ios

我正在使用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 */
}
Run Code Online (Sandbox Code Playgroud)

现在,如果body太长,即超过140个字符,则生成的推文视图根本没有任何文本,字符倒计时设置为140.在这种情况下我可能预期会截断,尽管它似乎没有记录在类引用当初始文本太长时会发生一种或另一种情况,但我可以接受在传递之前我必须截断到最大的推文长度setInitialText.

我不明白的是,其中的某些消息短于140个字符也会产生空鸣叫视图.

最初我看到似乎是一个完全有效的字符串,139个字符失败.我注意到缩短字符串使其工作.但是经过大量的实验,我还注意到用相同长度的随机文本替换碰巧出现在文本中的URL使其工作.换句话说,URL本身导致了问题.

所以我想也许我使用的URL有些奇怪,但我把它提炼到了这个.这个工作:

NSString *body = @"............................................................................................................................................";
Run Code Online (Sandbox Code Playgroud)

虽然这不是

NSString *body = @"............http://a........................................................................................................................";
Run Code Online (Sandbox Code Playgroud)

观察:

  • 它们都是140个字符长(并在控制台中以这种方式报告[body length]).唯一的区别是在第二个中间嵌入了一些模糊的URL.
  • 字符串中URL的位置似乎并不重要,但如果我将这些非句点字符中的任何一个更改为句点(从而使其不再像URL一样),它就不再被打破.
  • 如果我缩短了破损的一个,结束了14个周期,它就可以了.也就是说,嵌入在总长度为126个字符的句点中的这个特定URL很好.127或更大的打破.不清楚这与URL本身的长度有何关系.

有人见过这样的东西吗?知道发生了什么事吗?我做错了什么,或者iOS Twitter框架刚刚破解?

EdL*_*EdL 9

我遇到了完全相同的问题.它是Twitter框架中的一个已知错误,正在被跟踪.

请在dev.twitter.com https://dev.twitter.com/discussions/5024上查看此讨论

(如果可以的话,我会将其作为评论而不是答案发布,但我没有足够的SO可信度,所以我认为如果感兴趣的话我也会添加以下观察结果).

仅添加没有URL的文本时,字符计数按预期工作.使用addURL:方法添加URL会导致使用推文的21个字符(20个用于URL加空格).在初始文本中添加URL会导致20个字符用于URL.当包含单个URL(使用任一方法)时,当总字符数超过138(例如,URL +空格为20,初始文本为117个字符)时,框架将失败,从而丢失2个字符.只使用一个URL,设置初始文本然后使用addURL添加URL的顺序没有任何区别.

当添加2个URls时,当总字符数超过113而失去27个字符时,它会失败!但是,对于2个或更多,如果设置初始文本之前添加URL ,则会失败,总计数为136.因此,每个URL再次丢失2个字符.

摘要/解决方法 - 如果只包含1个URL,那么在初始文本中添加它将比使用addURL:方法给你一个额外的字符,但你仍然总是短2个字符.如果使用addURL添加2个或更多URL:然后在初始文本之前添加它们,但在修复错误之前,每个URL仍会丢失2个字符.

我已经提交了雷达,但据此我可以浏览其他人的(Apple)错误报告吗?,报告错误的次数越多,给予的优先级越高,因此值得其他人提交,以增加优先级.