Ich versuche, eine vom Benutzer eingegebene Zeichenfolge in eine sexy Zeichenfolge wie Phone.app auf dem iPhone umzuwandeln. Hier ist der Code, den ich benutze, der nicht funktioniert (kein spezielles Format kommt heraus) und nach einer bestimmten Anzahl von Ziffern beginnt er einfach "0" am Ende der Zeichenkette hinzuzufügen.
%Vor% Ich denke, dein Problem ist, dass NSNumberFormatter
keine Klammern, Leerzeichen oder Bindestriche unterstützt. Ich habe versucht, die gleiche Methode wie Sie zu implementieren, und es ist im Stillen gescheitert und nur unformatierten Text ausgegeben.
Das generelle Problem hierbei ist, dass das iPhone SDK keine Methode zum Formatieren von Telefonnummern in einer länderspezifischen Weise bietet.
Ich habe bei Apple folgende Fehler gemeldet (zwei davon waren Duplikate bekannter Probleme, daher habe ich Apples ursprünglichen Fehler # für diese hinzugefügt):
%Vor% In einer idealen Welt würde Apple ein NSPhoneNumberFormatter
zur Verfügung stellen, und Sie würden setFormatter
auf Ihrem UIControl
nennen, so dass es text
auf schöne Weise anzeigt. Leider existiert das nicht auf dem iPhone.
Die UIPhoneFormats.plist enthält vordefinierte Telefonformate für jedes Gebietsschema. Wenn Sie nur an US-Telefonnummern interessiert sind, müssen Sie diese Formate berücksichtigen:
+1 (###) ### - ####
1 (###) ### - ####
011 $
### - ####
(###) ### - ####
Ich musste etwas Ähnliches tun, und ich teilte die Ergebnisse, die ich hier bekommen habe: Ссылка
Nun, eine Telefonnummer sollte 10 Zeichen lang sein (11 mit der führenden 1), also sollten Sie anfangen, dies zu ändern:
%Vor%Und wenn man von der führenden 1 spricht, muss man das auch überprüfen.
Apple sagt, Sie können Ihren benutzerdefinierten Formatierer implementieren, wenn die Funktionalität der vorhandenen Formatierer nicht ausreicht:
NSFormatter ist für Unterklassen gedacht. Ein benutzerdefinierter Formatierer kann die Eingabe einschränken und die Anzeige von Daten auf neuartige Weise verbessern. Beispielsweise könnten Sie einen benutzerdefinierten Formatierer haben, der sicherstellt, dass von einem Benutzer eingegebene Seriennummern vordefinierten Formaten entsprechen. Bevor Sie sich entscheiden, einen benutzerdefinierten Formatierer zu erstellen, stellen Sie sicher, dass Sie die öffentlichen Unterklassen NSDateFormatter und NSNumberFormatter nicht konfigurieren können, um Ihre Anforderungen zu erfüllen.
Anweisungen zum Erstellen eines benutzerdefinierten Formatierungsprogramms finden Sie unter Erstellen eines benutzerdefinierten Formatierungsprogramms.
Tags und Links objective-c iphone cocoa cocoa-touch