Fehler in TWTweetComposeViewController?

8

Ich verwende TWTweetComposeViewController, wenn verfügbar, um Tweets aus meiner iOS App zu senden. Ich befülle den View-Controller mit Textbausteinen und lasse ihn dann nach eigenem Ermessen ändern und senden. Es funktioniert größtenteils gut. Heruntergebrannt, sieht es so aus (mit body zeigt auf eine gültige NSString ):

%Vor%

Nun, wenn body zu lang ist, dh mehr als 140 Zeichen, ist die resultierende Tweet-Ansicht überhaupt leer, Zeichen Countdown auf 140 gesetzt. In diesem Fall hätte ich eine Kürzung erwartet, obwohl dies nicht der Fall ist scheinen in der Klassenreferenz in der einen oder anderen Weise dokumentiert zu sein, was passiert, wenn der anfängliche Text zu lang ist, aber ich akzeptiere, dass ich die Kürzung auf die maximale Tweet-Länge tun muss, bevor ich an setInitialText übergebe.

Was ich nicht verstehe, ist, dass bestimmte Nachrichten, deren kürzer als 140 Zeichen sind, auch die leere Tweet-Ansicht erzeugen.

Zuerst habe ich eine scheinbar gültige Zeichenkette mit 139 fehlgeschlagenen Zeichen gesehen. Ich bemerkte, dass das Verkürzen der Saite es funktionierte. Aber nach vielen Experimenten bemerkte ich auch, dass das Ersetzen einer URL, die innerhalb des Textes mit zufälligem Text derselben Länge erschien, es funktionierte. Mit anderen Worten, die URL selbst verursacht ein Problem.

Ich dachte also vielleicht, dass die URL, die ich benutzt habe, etwas Seltsames ist, aber ich habe es auf diese Weise destilliert. Dieser funktioniert:

%Vor%

, während dies nicht

ist %Vor%

Beobachtungen:

  • Sie sind beide 140 Zeichen lang (und melden das in der Konsole mit [body length] ). Der einzige Unterschied besteht darin, dass in der Mitte der zweiten URL etwas ähnlich URL eingebettet ist.
  • Die Position der URL innerhalb des Strings scheint nicht von Bedeutung zu sein, aber wenn ich eines dieser nicht periodischen Zeichen in einen Punkt ändere (wodurch es nicht mehr wie eine URL aussieht), ist es nicht mehr kaputt.
  • Wenn ich die zerbrochene kürze, indem ich 14 Perioden vom Ende abschneide, funktioniert es. Das heißt, diese bestimmte URL, die in Punkte für eine Gesamtlänge von 126 Zeichen eingebettet ist, ist in Ordnung. 127 oder größer ist gebrochen. Nicht klar, wie oder ob dies die Länge der URL selbst betrifft.
Jemand hat jemals so etwas gesehen? Irgendeine Idee was ist los? Mache ich etwas falsch oder ist das iOS Twitter Framework einfach kaputt?

    
Paul Lettieri 20.04.2012, 06:13
quelle

6 Antworten

9

Ich habe genau das gleiche Problem gefunden. Es ist ein bekannter Fehler im Twitter-Framework und wird verfolgt.

Bitte sehen Sie sich diese Diskussion auf dev.twitter.com Ссылка

an

(Ich hätte das als Kommentar und nicht als Antwort geschrieben, wenn ich könnte, aber ich habe nicht genügend SO-Glaubwürdigkeit, also dachte ich, ich würde die untenstehenden Beobachtungen hinzufügen, falls sie von Interesse sind).

Beim Hinzufügen von Text ohne URL funktioniert die Anzahl der Zeichen wie erwartet. Das Hinzufügen einer URL mit der addURL: -Methode führt dazu, dass 21 Zeichen des Tweets verwendet werden (20 für die URL plus ein Leerzeichen). Durch Hinzufügen der URL im ursprünglichen Text werden 20 Zeichen für die URL verwendet. Wenn eine einzelne URL (unter Verwendung einer der beiden Methoden) eingeschlossen wird, schlägt das Framework fehl, wenn die Gesamtzahl der Zeichen 138 überschreitet (z. B. 20 für URL + Leerzeichen + 117 Zeichen des ursprünglichen Texts), wodurch 2 Zeichen verloren gehen. Bei nur einer URL ist die Reihenfolge, in der der Anfangstext festgelegt und dann die URL mit addURL hinzugefügt wird, nicht von Bedeutung.

Beim Hinzufügen von 2 URls schlägt es fehl, wenn die Gesamtanzahl der Zeichen 113 überschreitet und 27 Zeichen verloren gehen! Wenn Sie jedoch 2 oder mehr hinzufügen und die URLs BEFORE hinzufügen, wird der erste Text mit einer Gesamtzahl von 136 fehlgeschlagen. So gehen 2 Zeichen pro URL verloren.

Zusammenfassung / Workaround - wenn Sie nur 1 URL hinzufügen und dann im ursprünglichen Text hinzufügen, erhalten Sie ein zusätzliches Zeichen als die addURL: -Methode, aber Sie werden immer noch 2 kurze Zeichen haben. Wenn du 2 oder mehr URLs mit addURL hinzufügst: füge sie vor dem ursprünglichen Text hinzu, aber bis der Fehler behoben ist, wirst du immer noch 2 Zeichen pro URL verlieren.

Ich habe ein Radar, aber nach diesem Kann ich durchsuchen die Fehlerberichte anderer Leute (Apple)? , je öfter ein Fehler gemeldet wird, desto höher ist die Priorität, die er erhält, also lohnt es sich auch andere, ihn zu archivieren, um seine Priorität zu erhöhen.

    
EdL 03.09.2012, 17:26
quelle
3

Das scheint ein Fehler zu sein; Ich wünschte, es gäbe eine Möglichkeit, TWTweetComposeViewController direkt zu fragen, wie viel Platz noch übrig ist. Zum Glück gibt es einen indirekten Weg zu fragen. setInitialText: gibt NO zurück, wenn die Nachricht zu lang ist, also habe ich es mit roher Gewalt ausgeführt, indem ich fünf Zeichen auf einmal abschneide, bis YES zurückgegeben wird:

%Vor%

Ich weiß, es ist hässlich, oder? Aber zumindest erlaubt es mir, eine vernünftige Annäherung der maximalen Länge zu erhalten, so dass ich nicht mehr den Linktitel abschneide, als ich brauche.

    
theory 30.08.2012 07:41
quelle
1

Einige Code-Auszug für das automatische Nachrichten-Trimmen:

%Vor%     
Alexis K 10.06.2013 12:48
quelle
0

Anstelle von

%Vor%

Versuchen Sie es

%Vor%

Ich habe keine Ahnung, warum es so ist, aber ich habe gerade mit diesem Problem konfrontiert und es versucht und es funktioniert für mich.

    
msk 25.04.2012 16:11
quelle
0

Ich hatte ein ähnliches Problem. Twitter-Controller zeigt keine Tweets an, die zu lang sind. Sie können einen Teilstring eines Tweets verwenden, indem Sie auf 140 Symbole reduzieren:

%Vor%     
wzbozon 02.07.2012 18:52
quelle
-1

probiere diesen Code

aus %Vor%     
AK_ 10.06.2012 00:02
quelle

Tags und Links