3

ユーザーが選択したテキストとリンクを使用して、アプリでiOS Twitter 共有シート ( SLComposeViewControlleriOS 6、 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 の開発者サイトのこの記事は、問題があることを示唆しているようですが、それは 1 年以上前のものです。

addURL編集:メソッドを使用する代わりに、リンクをテキストの最後に手動で追加しても、結果は同じです。

4

1 に答える 1

0

length方法にNSStringは、結果に影響を与える可能性のある合成文字シーケンスに関する制限があります。

返される数には、構成された文字シーケンスの個々の文字が含まれているため、このメソッドを使用して、印刷時に文字列が表示されるかどうか、または表示される長さを判断することはできません。

于 2013-07-15T17:21:24.250 に答える