Ошибка в TWTweetComposeViewController?

Я использую 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 Framework?

8
задан Paul Lettieri 22 April 2012 в 20:53
поделиться