使用SLComposeViewController(Twitter)和TWTweetComposeViewController时,字符计数不准确

3

我在我的应用中使用用户选择的文本和链接来展示iOS Twitter共享工具栏(在iOS 6上为SLComposeViewController,在iOS 5上为TWTweetComposeViewController)。如果文本太长,我会对其进行截断:

NSString *text = [self getSelectedText];
NSString *myLink = [self getLink];
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[controller addURL:[NSURL urlWithString:myLink]];
while (![controller setInitialText:text] && text.length > 10)
{
  text = [text substringToIndex:text.length - 5];
}

[self presentViewController:controller animated:YES completion:NULL];

当我这样做时,字符计数会变得混乱。在达到预期长度之前,setInitialText返回YES,然后共享表格显示溢出文本。例如,如果链接长度为35个字符,则在减少了几次之后,共享表格接受长度为117的字符串。117 + 35 = 152(超过12个),但共享表格显示超过9个。
我是否错误地使用了此API,还是字符计数存在错误?Twitter开发网站上的这篇文章似乎表明存在问题,但已经过去一年了。
编辑:如果手动将链接附加到文本末尾而不使用addURL方法,结果相同。

这个链接是否有帮助:https://dev59.com/12LVa4cB1Zd3GeqP0-pb - msk
将自己添加到遇到此问题的人员列表中。截至2013年11月仍存在该问题。非常令人沮丧... - bkbeachlabs
1个回答

0

NSStringlength方法在处理组合字符序列时存在限制,这可能会影响您的结果。

返回的数字包括组合字符序列的各个字符,因此您不能使用此方法确定字符串在打印时是否可见或其长度。


这很烦人。但是这里的最终问题不在于 length 方法,而是 Twitter 系统告诉我可以使用一个字符串,然后又说它太长了。 - Tom Hamming
该文档是指物理空间,即某些文本所占用的像素。实际长度是分开计算的。 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接